声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 21280|回复: 16

[综合讨论] matlab支持的矩阵最大维数是多少?

[复制链接]
发表于 2007-10-1 10:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
刚发现矩阵取大了不行。

按我实验的现象发现,好像行数和列数的和应该有限制。

但是具体是多少就不清楚了。


我做的东西是随机的,所以需要取更多的数据以便接近真实值。所以需要矩阵维数大一点。
回复
分享到:

使用道具 举报

发表于 2007-10-1 10:28 | 显示全部楼层
原帖由 后知后觉 于 2007-10-1 10:18 发表
刚发现矩阵取大了不行。

按我实验的现象发现,好像行数和列数的和应该有限制。

但是具体是多少就不清楚了。


我做的东西是随机的,所以需要取更多的数据以便接近真实值。所以需要矩阵维数大一点。


矩阵太大可以先使用稀疏矩阵的形式申请空间,此外,矩阵维数过多的时候应考虑精简维数
 楼主| 发表于 2007-10-1 10:51 | 显示全部楼层
恩,谢谢‘八’哥的建议。

我看看能不能做到。

我只是想问问有没有知道matlab矩阵最大维数的。我想利用最大的维数,这样从统计意义上讲,结果会比较精确点。
发表于 2007-10-1 15:45 | 显示全部楼层
做什么分析,需要那么大的矩阵?
发表于 2007-10-1 17:09 | 显示全部楼层
好像是2000
不过到1000就非常慢了。
我以前求一个1000维的矩阵的逆,用了几个小时。
发表于 2007-10-1 17:16 | 显示全部楼层
这个好象要看机子的内存多大而定.
发表于 2007-10-1 18:55 | 显示全部楼层

回复 #6 xjzuo 的帖子

嗯,我记得每种编程语言的数组大小都是受机器的内存决定的,数值精度貌似也是CPU、内存决定的。
 楼主| 发表于 2007-10-1 20:01 | 显示全部楼层

回复 #4 wanyeqing2003 的帖子

模态分析。数据太少的话,精度太差,不是一般的差。

行数要求多一些。我一般取18000多了。

只是做矩阵的相乘,所以运算还可以。

我的电脑1G内存。
发表于 2007-10-1 23:17 | 显示全部楼层
原帖由 后知后觉 于 2007-10-1 20:01 发表
模态分析。数据太少的话,精度太差,不是一般的差。

行数要求多一些。我一般取18000多了。

只是做矩阵的相乘,所以运算还可以。

我的电脑1G内存。


2G的内存比较好些。18000是第一维的大小?共几维?如果是 18000*1 的矩阵,应该可以运算的
 楼主| 发表于 2007-10-2 08:14 | 显示全部楼层
10*18000

这样是可以运算的。

我后来想增加列数到30000.发现不行。提示说超出范围。改到25000也不行。没有再试

[ 本帖最后由 eight 于 2007-10-2 10:20 编辑 ]
发表于 2007-10-2 09:44 | 显示全部楼层

回复 #10 后知后觉 的帖子

你用这个来处理你的实验数据的?要这么多的数据吗?你增加到那么大估计不行

[ 本帖最后由 eight 于 2007-10-2 10:20 编辑 ]
发表于 2007-10-2 10:29 | 显示全部楼层
原帖由 后知后觉 于 2007-10-2 08:14 发表
10*18000

这样是可以运算的。

我后来想增加列数到30000.发现不行。提示说超出范围。改到25000也不行。没有再试


提示出错的问题也许是当前内存不足或者页面交换区被其他程序占用导致的。试试重启电脑,然后只运行 matlab 试试。如果问题依旧,那应该是矩阵太大造成的。两个解决方法:

1. 如果你只对部分数据进行操作,而非整个矩阵,则不需要申请那么大的空间来存放整个矩阵。例如,如果你每次只对 1*18000 的数据进行处理,则只需要申请 1*18000 大小的矩阵来存储,大不了用循环罢了。这是用时间换取空间的方法(事实上,大型矩阵处理时使用循环未必比不用循环慢)

2. 如果整个矩阵的数据是关联的(针对你的处理来说),可以考虑稀疏矩阵进行申请、存取,这时候数据中的 0 不被存储下来,不过对于原始数据,这种方法不一定作用很大(0 元素不多),你试试吧

评分

1

查看全部评分

发表于 2007-10-4 10:08 | 显示全部楼层
呵呵,维数过高的稀疏矩阵也是无法申请的,例如10000*10000
发表于 2007-10-4 10:23 | 显示全部楼层
原帖由 w89986581 于 2007-10-4 10:08 发表
呵呵,维数过高的稀疏矩阵也是无法申请的,例如10000*10000


应该与内存相关,我 1.5 G 内存的结果:

  1. >> A=sparse(10000,10000);
  2. >> whos A
  3.   Name          Size               Bytes  Class     Attributes
  4.   A         10000x10000            40016  double    sparse   
复制代码
发表于 2007-10-4 13:34 | 显示全部楼层

回复 #14 eight 的帖子

如果软件本身不对所申请的空间进行限制,那么就只和内存虚拟内存有关。我256M内存的测试结果如下:
  1. >> clear all
  2. tic
  3. A=sparse(1e7,1e7);
  4. whos A
  5. toc
  6.   Name       Size                    Bytes  Class
  7.   A   10000000x10000000           40000016  double array (sparse)
  8. Grand total is 1 element using 40000016 bytes
  9. Elapsed time is 0.235748 seconds.
复制代码


:lol 我估计你的电脑可以申请到1e10*1e10的。
>> A=sparse(1e9,1e9);
??? Error using ==> sparse
Out of memory. Type HELP MEMORY for your options.

我的到1e8的时候,也是可以申请的。不过慢的要命

[ 本帖最后由 花如月 于 2007-10-4 13:38 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 18:32 , Processed in 0.070595 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表