交叉乘积错误



我在交叉乘积功能方面遇到了问题。我需要为每个像素取两个向量的叉积,然后对所有像素的结果求和。

 i=1;     
 [h,w,d] = size(current_vec);
 for pxRow = 1:h % fixed pixel row
 for pxCol = 1:w % fixed pixel column
 for pxsize = 1:d 
 for r = 1:h % row of distant pixel
 for c = 1:w % column of distant pixel
 for dpth = 1:d
 bfield(c,r,dpth) = cross(current_vec(c,r,dpth),dist_vec(c,r,dpth));                               % pythagoras theorem to get distance to each pixel                                                                     % unit vector from x to s                     
 end
 end
 end
 Bfield(i) = {bfield}; % filling a cell array with results. read below
 i = i+1;
 end
 end
 end

??? Error using ==> cross at 37
A and B must have at least one dimension of length 3.
??? Error using ==> cross at 37
A and B must have at least one dimension of length 3.
Error in ==> MAC2 at 71
bfield(c,r,dpth) = cross(current_vec(c,r,dpth),dist_vec(c,r,dpth));                               

但是,current_vec和dist_vec的违规向量如下:

>> size(current_vec)
ans =
    35    35     3
>> size(dist_vec)
ans =
    35    35     3
因此,就

我而言,它们符合在交叉产品中使用的标准。 为什么不是这样呢?

你需要使用cross的矢量化形式:

bfield = cross(current_vec,dist_vec);

cross 将处理长度为 3 的第一维。 使用嵌套循环的方式是,通过索引访问单个元素(标量)。 不能用标量交叉标量。

相关内容

  • 没有找到相关文章

最新更新