[问题] 关于影像处理使用cov "out of memory"

楼主: ossianlin (linossian)   2015-05-30 22:31:43
这个问题困扰了我快三个礼拜...应该更久...
不知道为什么都会out of memory 也上网查过解法但都没什么解法...
学校实验室电脑是32-bit的 内存2GB 目前只剩虚拟内存扩充那招没用过
不过目前一直找不到Boot.ini 而且老师也认为不会这么麻烦才是
实验室学长建议从程式码下手,目前就将前面步骤用了save/load法
不过进行covariance的步骤还是出现这状况...
想不到办法只好来这边寻求答案...
以下先上程式码:
load 'martix_X' %X为一输入影像群之大矩阵,其大小为76800xN N为输入影像张数
a = transpose(X);
cov_x = cov(single(a)); or cov_x = cov(double(a));
得到结果都是out of memory...
不填double/single则error bsxfun
现在卡在这段后面要再做eigen根本不能往下做...
跪求版上前辈指导了@@"
作者: jatj   2015-05-31 01:16:00
打whos就可以看变量占的大小 可以估算哪个占太多空间
作者: celestialgod (天)   2015-05-31 09:13:00
用循环算covariance上三角部分,用cov可能用到太多内存2G的电脑,系统大概用掉一半,matlab最多只有1G可以使用,矩阵一大,真的很容易内存不足error bsxfun应该是因为取完平均要跟原矩阵做相减时,发现原矩阵不是double.... 才出问题。没注意到你还有另立一个transpose...这个是主要原因直接cov(double(X'))试试看转置前的COV是5X5...转置后是76000 X 76000内存会不够是因为要存76000 x 76000的矩阵Requested 76000x76000 (43.0GB) array只是我很好奇,这样的变异数矩阵是有问题的...只有五列...你要估计 76000*38000个参数qq76001*38000 (更正)至于cov的用意,我也不清楚你们的目的无从解释

Links booklink

Contact Us: admin [ a t ] ucptt.com