删除矩阵列 - 内存不足

时间:2014-07-07 11:58:07

标签: matlab memory matrix

我有一个A(1:n^2,1:n^2+1)格式的大矩阵和n=150,我想删掉最后一栏:

A=A(1:n^2,1:n^2);

这会产生"内存不足错误"。我已经尝试了

A(:,n^2+1)=[];

但得到了相同的错误消息。 我需要将矩阵与长度为n ^ 2的向量相乘,因此A变为二次方是至关重要的。

也许有人知道解决这个问题的有效方法。

1 个答案:

答案 0 :(得分:0)

要剪切最后一列,一种好方法是使用关键字end

A(:,end) = [];

但它似乎耗费了很长时间......我不知道为什么(也许它在内部调用realloc?)。我没有任何“内存不足”的记忆。 Matlab2013出错(即使是第二次尝试)。

对于您的问题,您可能不需要剪切最后一列,只需选择正确的A:

B = A(:,1:end-1)*v;

但是如果你仍然有一个“内存不足”的话。错误,也许是因为Matlab的最大可用内存太低;使用命令memory来查看是否是这种情况。在所有情况下,您的问题似乎都很大,请参阅有关Resolving Out-of-Memory Errors

的帮助页面