1

我有一个 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 向量。

4

2 回答 2

2

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

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

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

于 2013-07-25T21:16:54.707 回答
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}
于 2013-07-25T21:17:27.103 回答