Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab代码中使用for循环时出现内存不足错误_Matlab_Out Of Memory - Fatal编程技术网

在matlab代码中使用for循环时出现内存不足错误

在matlab代码中使用for循环时出现内存不足错误,matlab,out-of-memory,Matlab,Out Of Memory,我有一个不同长度的1x46电池 我想将每个单元格归零填充到最大长度单元格,因为我想应用cell2mat函数,为了应用该函数,我需要使该单元格保持一致 但每当我运行代码时,它都会给出内存错误 最大长度为6691240,即最大长度单元格中有6691240个元素 代码如下 for i=1:numel(X1) if size(X1{i}) < 6691240 X1{i}(end,6691240)=0; end end i=1时的:numel(X1) 如果大小(X1{i})

我有一个不同长度的1x46电池

我想将每个单元格归零填充到最大长度单元格,因为我想应用cell2mat函数,为了应用该函数,我需要使该单元格保持一致

但每当我运行代码时,它都会给出内存错误

最大长度为6691240,即最大长度单元格中有6691240个元素

代码如下

for i=1:numel(X1)
  if size(X1{i}) < 6691240
  X1{i}(end,6691240)=0;
  end
end
i=1时的
:numel(X1)
如果大小(X1{i})<6691240
X1{i}(end,6691240)=0;
终止
终止

我的理解是,每个单元格都是一个向量,每个向量的长度需要是6691240。因此,代码需要更改为:

for i=1:length(X1)
    if length(X1{i}) < 6691240
        X1{i}(6691240)=0;
    end
end
i=1时的
:长度(X1)
如果长度(X1{i})<6691240
X1{i}(6691240)=0;
终止
终止

8*46*6691240=2GB,因此,如果您至少有8GB用于进一步操作数据,则此功能应该可以正常工作。但是你有
X1{I}(end,6.7M)
->如果你的
X1
说了10k个元素,它现在会变成一个包含10k*6.7M个元素的矩阵,这显然太大了。是的,我知道你能提出一些可能的解决方案吗?