腾龙娱乐开户l7787482287?

8 views (last 30 days)
zane patton
zane patton on 17 Apr 2022
Edited: zane patton on 24 Jul 2022
我想用一个坐标作为输入,利用while循环与一组三维变量做对比,其中第一列作为x轴,第二列作为y轴,测定输入坐标与变量坐标之间的距离,若小于10,则提取变量第三列数据累加,代码如下:
load('matlab.mat')
A=[1,2];
B=Untitled;
C=Untitled1;
n=size(B,1);
e=0;
i=1;
while i < n+1
a=B(i,:);
b=a(:,1:2);
c=a(:,3);
d=norm(A-b);
if d<10
e=e+c;
i=i+1;
else
i=i+1;
end
end
但是最后i的值一直在加,可e的值一直都是0,请问是哪里出错了?

Accepted Answer

腾龙娱乐公司客服17787482287
如果你这个 d=norm(A-b) 对于全部的 b 值,始终保持 d>=10 ,那含有 e=e+c; 的分支永远进不去,自然只有 i 在增加了

More Answers (1)

starlight Smith
starlight Smith on 17 Apr 2022
这是警告,不是报错。比如
M = 1 : 1 : 5;
n = length( M );
M( 1 : n/2 )
这样的代码也会出警告,但实际上能够运行。无非就是 n 是奇数,导致 n/2 不是整数,M( 1 : n/2 )这种索引调用,实际上调用的是M( 1 : floor( n/2 ) ),因此MATLAB才会给出警告,让使用者明白,floor( n/2 )可能会导致不符合代码编写目的的情形,需要注意。

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!