我有一个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变为二次方是至关重要的。
也许有人知道解决这个问题的有效方法。
答案 0 :(得分:0)
要剪切最后一列,一种好方法是使用关键字end
:
A(:,end) = [];
但它似乎耗费了很长时间......我不知道为什么(也许它在内部调用realloc?)。我没有任何“内存不足”的记忆。 Matlab2013出错(即使是第二次尝试)。
对于您的问题,您可能不需要剪切最后一列,只需选择正确的A:
B = A(:,1:end-1)*v;
但是如果你仍然有一个“内存不足”的话。错误,也许是因为Matlab的最大可用内存太低;使用命令memory
来查看是否是这种情况。在所有情况下,您的问题似乎都很大,请参阅有关Resolving Out-of-Memory Errors