1

如何解决以下问题。我正在尝试通过使用它的 x 和 y 分量(嵌入在 c 和 r 中)同时附加 z 维度来创建向量 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

下标赋值维度不匹配通常意味着左侧数组和右侧数组的大小不匹配。

由于您要进行如此多的数组分配,而我们看不到数组有多大,因此很难诊断。

错误还说什么?它是否指定了哪一行是问题?

我担心这两行:

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 回答