2012-06-06 77 views
1

如何解决以下问题。我试图通过使用它的x和y组件(嵌入在c和r中)创建矢量distvec和magvec,同时附加z个dimiensions。matlab ???下标分配维度不匹配

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 

???下标分配尺寸不匹配。

由于

回答

1

甲下标分配尺寸失配通常意味着左侧的阵列的大小和在右侧的阵列不匹配。

既然你做这么多的数组赋值,我们不能看到阵列有多大,这是非常难以诊断。

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

我很担心这两条线:

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

而此行

B(i) = {b}; 

检查左,右矢量的大小是用大小函数或类似相同。

之前的for循环,增加

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

distvec和magvec都应该是三维阵列。

相关问题