在这段代码中,我必须找到距离值,我必须保存小于或等于425且大于零的值。我估计在这个范围内有大约18000个值,我必须用x1,x2,y1,y2值保存所有值。但这种结构给了我错误。 var3(variable_3)给出了正确的答案,它给出了整个距离矩阵,但是当我们保存小于425的值时,它会导致错误,请帮助我,谢谢.var4矩阵给出了零值。
var3 = zeros (258840,1);
var4 = zeros (18000,5);
m=1;
for n = 1: 258840
x1 = var1 (pairpoints(n,1), 1);
x2 = var1 (pairpoints(n,2), 1);
y1 = var1 (pairpoints(n,1), 2);
y2 = var1 (pairpoints(n,2), 2);
% distance formula
d1=(((x2-x1)^2)+((y2-y1)^2))^(0.5);
% save distance values in matrix named var3
lin = sub2ind(size(var3),n,1);
var3(lin) = d1;
if 0<d1<426
line = sub2ind(size(var4),m,1);
var4(line) = x1;
line = sub2ind(size(var4),m,2);
var4(line) = x2;
line = sub2ind(size(var4),m,3);
var4(line) = y1;
line = sub2ind(size(var4),m,4);
var4(line) = y2;
line = sub2ind(size(var4),m,5);
var4(line) = d1;
m=m+1;
end
end
答案 0 :(得分:1)
首先:如果你提供的代码是可运行的,它会更容易找到错误;那就是你需要提供var1
和pairpoints
,或至少解释它们是什么!
我仍然可能找到了你的问题。我可以在您的代码中看到的问题是if
- 语句:if 0<d1<426
。当Matlab看到它时,它将其解释为if (0<d1)<426
。现在0<d1
是logical
,也就是说,它总是1(true
)或0(false
)。 if语句可以是if 1<426
或if 0<426
,因此无论您为d1
获得哪个值,您都将始终输入if
- 分支。
如果您想测试d1
是否小于426且大于0,您应该写下:if (0<d1)&&(d1<426)
。
我希望这可以帮到你!