matlab kmeans out of memory

原来的机器是win xp,2G内存,Intel 2G双核CPU,跑KMeansCluster对20080x129的矩阵进行聚类时,目标聚类数设定为100,出现内存不够的提示。将目标聚类数试着往小调,当到30时可以跑通。

刚好要换新机器,于是等了几天,看看新机器上内存加大后能不能跑。

新机器是win 7,Intel 2Quad CPU,四核,4G内存。

问题依旧,还是只能接受30。从资源管理器观察,内存最多时消耗到2.5G。

看来不是加大物理内存就能解决的问题。应该是代码中某个步骤无法进行大量数据操作的问题了。

 

??? Out of memory. Type HELP MEMORY for your options.

Error in ==> repmat at 80
            B = A(:, ones(siz(2), 1));

Error in ==> DistMatrix at 29
      D{k}= repmat(B(:,k),1,hA);

Error in ==> kMeansCluster at 66
        d=DistMatrix(m,c);  % calculate objcets-centroid distances

Error in ==> ClusterFeatures at 30
[y,c,counters]=kMeansCluster(Temp,100,1);

 

 

关于out of memory,网上很多人也碰过这个问题,

mathworks.com上有详细的介绍,以及相应的策略。

http://www.mathworks.com/support/tech-notes/1100/1107.html

还有个中文的:

http://hi.baidu.com/zwwcqu/blog/item/2ee2261ef7b9eecfa6866943.html

 

按照这些去做,还是不能解决问题。看来还是得从代码着手,提高性能,降低内存占用。

 

在网上继续找kmeans代码的同时,发现原来matlab自带就有kmeans算法的实现,试了一下,内存占用很小,2分钟处理完了我的

20080*129矩阵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值