1

次の問題を解決するにはどうすればよいですか。z次元を追加しながら、xおよびyコンポーネント(cおよびrに埋め込まれている)を使用して、ベクトルdistvecおよびmagvecを作成しようとしています。

for pxRow = 1:h % fixed pixel row
 for pxCol = 1:w % fixed pixel column

 for r = 1:h % row of distant pixel
 for c = 1:w % column of distant pixel

 R(c,r) = sqrt((r-pxRow)^2 + (c-pxCol)^2);                               % pythagoras theorem to get distance to each pixel
 O(c,r) = sqrt(Ox(c,r).^2 + Oy(c,r).^2);                                 % orientation vector 
 If(c,r) = sqrt((dx(c,r)).^2 + (dy(c,r)).^2);                            % magnitude of current 
 Rxs(c,r) = R(c,r)./norm(R(c,r));                                        % unit vector from x to s                     
 dist(c,r) = Rxs(c,r)./R(c,r);
 mag(c,r) = O(c,r).*If(c,r);
 distvec(c,r) = [dist(c) dist(r) 0];
 magvec(c,r) = [mag(c) mag(r) 0];                      
 b(c,r) = cross(magvec,distvec);% b field = If(s)O(s) x Rxs/R.^2  BIOT SAVART LAW
 end
 end
 B(i) = {b}; % filling a cell array with results. read below

??? 添字付きの代入次元が一致しません。

ありがとう

4

1 に答える 1

1

添字付き代入次元の不一致は、通常、左側の配列と右側の配列のサイズが一致しないことを意味します。

非常に多くの配列割り当てを行っているため、配列の大きさがわからないため、診断が非常に困難です。

エラーは他に何を言っていますか?どの行が問題であるかを特定していますか?

次の 2 行が気になります。

distvec(c,r) = [dist(c) dist(r) 0];
magvec(c,r) = [mag(c) mag(r) 0];  

そして、この行

B(i) = {b};

size 関数などを使用して、左右のベクトルのサイズが同じであることを確認します。

for ループの前に、追加します。

size(distvec)
size(magvec)
size(B)
size(b)

distvec と magvec は両方とも 3D 配列である必要があります。

于 2012-06-06T10:46:16.857 に答える