Matlab 用于距离计算的For-Loop程序

Matlab 用于距离计算的For-Loop程序,matlab,Matlab,我有一个关于for循环的问题;我必须计算光栅矩阵中每个单元的最短“物理距离”和“分配”,如下所示,我开发了代码,但距离计算中出现了错误。。。。 请帮帮我 Raster = [1 0 0 1 0 0; 0 0 0 0 0 0; 0 0 0 0 0 0; 0 0 1 0 0 1;0 0 0 0 0 0;0 1 0 0 0 0]; [i,j] = find(Raster==1); [nrow,nclon] = size(Raster); Dist = zeros(nrow,nclon); D = 1;

我有一个关于for循环的问题;我必须计算光栅矩阵中每个单元的最短“物理距离”和“分配”,如下所示,我开发了代码,但距离计算中出现了错误。。。。 请帮帮我

Raster = [1 0 0 1 0 0; 0 0 0 0 0 0; 0 0 0 0 0 0; 0 0 1 0 0 1;0 0 0 0 0 0;0 1 0 0 0 0];
[i,j] = find(Raster==1);
[nrow,nclon] = size(Raster);
Dist = zeros(nrow,nclon);
D = 1;
% Cell Size = 1m
for ii = 1:6
   for jj = 1:6
      E(ii,jj) = (((ii-i)^2 +(jj-j)^2)^0.5)*D
   end
end

您应该阅读错误消息:

Error using  ^ 
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
您可能要做的是计算到
光栅中每个
1
的元素距离,并取其最小值:

E(ii,jj) = min(((ii-i).^2 +(jj-j).^2).^0.5*D);

您应该阅读错误消息:

Error using  ^ 
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
您可能要做的是计算到
光栅中每个
1
的元素距离,并取其最小值:

E(ii,jj) = min(((ii-i).^2 +(jj-j).^2).^0.5*D);