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

cell 配列を作成するだけです。

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 に答える