在MATLAB中保存多维数组中每次迭代生成的数据

时间:2014-08-03 21:38:17

标签: matlab matrix

我有这段代码:

for h= 1:length ( bb1{CH(i)})
    for k= 1:length(  bb2{CH(j)})
         if NN(bb1{CH(i)}(h),bb2{CH(j)}(k))==1                    
           d = [bb1{CH(i)}(h),bb2{CH(j)}(k)]
         end
    end
end

当我运行此代码时,d的值取最后一次迭代的值。我想保存所有迭代的值。例如,我想要一个rows_nb乘2矩阵。

1 个答案:

答案 0 :(得分:0)

这是高度未经优化的代码,但原因很明显。您的代码在该代码的每次迭代中都会分配给d,并且它会自行覆盖。

因此,如果要保存矩阵中的所有值,则需要附加到d 。因此,这样做:

for h= 1:length ( bb1{CH(i)})
  for k= 1:length(  bb2{CH(j)})
      if  NN(bb1{CH(i)}(h),bb2{CH(j)}(k))==1
        d = [d; bb1{CH(i)}(h),bb2{CH(j)}(k)]; %// Concatenate
      end
  end
end

这样,您每次都会向矩阵添加两列,并在每次迭代时添加一行。