作者olliekr (想买D2000...)
看板MATLAB
标题Re: [问题] MATLAB对於大型反矩阵及大型矩阵的运算
时间Mon Apr 29 17:41:44 2013
第一个问题应该用repmat做比较快
假定你的rowsum是40000x1的vector
rowsum_m就会是repmat(rowsum,1,4000);
也就是把rowsum沿row方向复制4000次
万一发生记忆体不足的状况
先依据rowsum内的数据作定义後再复制
int8、int16、single、double之类的
我以rand产生rowsum,再转成int16
依照上述流程跑,应该可以在1秒内完成
第二个问题留给板友接力... 这方面没什麽研究...
※ 引述《jamesweb3 (James)》之铭言:
: 这个问题困扰我很久了~
: 由於实验的需要,我必须操作大型的矩阵
: 其中以下2个步骤相当缓慢,不知道有没有人可以帮我解决:(
: 1.我的矩阵(A)约要40000*4000这麽大,建造方式是每一个row都是相同的值
: 而这个值就是某个已经建好的vector(B)决定,因此我想到用"回圈"
: for i = 1:S
: rowsum_m(i,1:1:4000) = rowsum(i);
: end
: 结果,回圈在MATLAB相当慢!!!有没有好的解决方式?
: 2.其中一个步骤需要算反矩阵(temp),导致结果非常非常慢~不知道有什麽问题
: 这个矩阵的大小在40000*40000左右
: 我要计算的是: p1 = (1-alpha)*(1-beta)*(temp\Wuo);
: 所以,需要有inv(temp), 我不知道怎麽样可以快一点
: 一次大多许一小时以上
: =========================
: 烦请知道的朋友告诉我
: 我会感激不尽!!
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 204.124.83.132
1F:推 sunev:第二个没救,反矩阵本来就要算很久。 04/29 19:09
2F:→ sunev:一个小时差不多,除非矩阵有特殊的数学结构。 04/29 19:09
3F:→ iHakka:加入cuda平行计算的行列吧 04/29 21:13
4F:推 jamesweb3:可以大致说一下cuda怎麽做吗? 04/29 21:56
5F:推 sunev:买张支援cuda的显卡先 04/29 22:24