在MATLAB中保存嵌套for循环中不同大小的向量

时间:2013-07-25 21:08:29

标签: matlab for-loop vector

我有一个3嵌套for循环,它产生一个向量,但每次它运行循环时,生成的向量会改变大小。我需要在for循环结束时保存这些向量中的每一个,所以我想使用mat2cell并将它们存储在一个单元格中。但是我不知道代码会得到一个包含这些不同大小的向量的单元格向量。

我将给出一个示例代码

for ip = n_low:n_up
    for jx = x_low:x_up
        for jphi = phi_lowx:phi_upx
            lx = find_path(ip,jx,jphi,0,1);
           .
           .
           .
           A_r = volumeintegrate(integr_final_r , r , z , phi);
       end
   end
end

显然,您不知道这些变量是什么或数字,但我认为不需要解决问题。无论如何A_r是在循环结束时吐出的东西,但是当循环重复时A_r的大小不同。我需要保存每个A_r矢量。

2 个答案:

答案 0 :(得分:2)

添加计数器并保存到单元格元素:例如:

counter=0
for ...
   for ...
      for ...
          counter=counter+1;
          A_r{counter} = volumeintegrate(integr_final_r , r , z , phi);

然后提取第n个向量,只需写A_r{n}

答案 1 :(得分:2)

只需创建一个单元格数组:

A_r = cell(Ni, Nj, Nk)

然后创建循环 - 注意我正在对表现良好的整数进行索引,我将用它作为我的单元格数组的索引,然后通过查看数组iVec等来计算所需变量的实际值:

iVec = n_low:n_up;
Ni = numel(iVec);
jVec = x_low:x_up;
Nj = numel(jVec);
kVec = phi_lowx:phi_upx;
Nk = numel(kVec);

A_r = cell(Ni, Nj, Nk);

for ii = 1:Ni
  ip = iVec(ii);
  for jj = 1:Nj
    jx = jVec(jj);
    for kk = 1:Nk
      jphi = kVec(kk);
      lx = find_path(ip,jx,jphi,0,1);
      ....
      A_r{ii,jj,kk} = volumeintegrate(integr_final_r , r , z , phi);;
    end
  end
end

您现在可以按照分配的方式访问每个数组:

A_r{ii,jj,kk}