大家好
小弟目前正在跑一个计算
流程大致上是这样
先产生一个empty matrix
用for循环跑不同的参数 ex. for x = 0 : 0.01 : 0.12
每次都解一个大型矩阵
大概10000x10000
每次会解出10000个eigenvalue
接着把这个10000个eigenvalue用column方式储存到empty matrix中
所以跑完之后那个empty矩阵就会变成
[[v_0] [v_0.01] [v_0.02] ... [v_0.12] ]
每个v都代表一个 10000x1 的column
接下来再把这个矩阵的"每一个row"依次对x = 0 : 0.01 : 0.12 作图
所以会画出10000条线
原本10000x10000的case我的电脑还是可以跑
但再变大几倍后就会出现out of memory
我想了几种解决方法,但不清楚怎么执行,请各位大大帮帮我
(1)
我想说out of memory应该是因为最后那个empty matrix会变超大
所以想说能不能自行产生10000个empty matrix
每次解完一次10000x10000矩阵的eigenvalue后 把column中每个元素依次存在
那10000个empty matrix中
这样的话最后就会有10000个矩阵
但是每个矩阵都是小小的row (ex. 0:0.01:0.12 大概才1*13的 row array而已)
我希望程式码大概长这样
for i = 1 : 1 : 10000 ;
造出"名字是 Ai "的empty matrix ; ←这边不会用orz
end
for x = 参数 ;
解10000x10000的矩阵
解出10000x1的eigenvalue column vector(假设叫他v)
把每个元素依次存在对应的Ai empty matrix中
for j = 1 : 1 : 10000 ;
Aj = [Aj v(j)] ; ←这边不会用orz
end
end
不知道这样把矩阵拆成10000个小矩阵的方法能不能解决
(2)
研究室好像有大型电脑 但我的project以理论推导为主 几乎没碰过
如果用大型电脑帮我跑的话 能不能用我最一开始的流程呢?
就是直接存一个超大容量的矩阵 再一次对个别row作图
我是希望最后最上面那个流程可以处理70000x70000的矩阵
不知道大型电脑有没有办法解决out of memory的问题
小弟仍在学习matlab
关于以上几点问题希望各位指教
谢谢