for嵌套if后d_0为空,但去掉if可以得到d_0,请问这是为什么呢?(有数据读取,代码无法独立运行)

d_0=(0);
for i=1:1:707
for n=1:1:707
if(((x(i,1)-x(n,1)).^2+(y(i,1)-y(n,1)).^2+(z(i,1)-z(n,1)).^2)<144 && ((x(i,1)-x(n,1)).^2+(y(i,1)-y(n,1)).^2+(z(i,1)-z(n,1)).^2)<64 && n~=i)
d_0 = [d_0,sqrt( ((x(i,1)-x(n,1)).^2+(y(i,1)-y(n,1)).^2+(z(i,1)-z(n,1)).^2) )];
end
end
% d_0 = [d_0,sqrt( ((x(i,1)-x(i+1,1)).^2+(y(i,1)-y(i+1,1)).^2+(z(i,1)-z(i+1,1)).^2) ) ];
end

同学你好,我给你检查了一下代码,主要是两个问题
(1)你这里是单个量的判断语句,不涉及矩阵向量之间的点乘,所以可以去掉不必要的.号;
(2)你的判断有两个&&连接了三个语句,但是第一个和第二个之间似乎,第二个可以取代第一个,因为同是小于,小于64比小于100更强,所以这里是不是你写错了?是不是应该改成小于144但是大于64?
好了,代码

d_0=(0);
for i=1:1:707
    for n=1:1:707
        if(((x(i,1)-x(n,1))^2+(y(i,1)-y(n,1))^2+(z(i,1)-z(n,1))^2)<144 && ((x(i,1)-x(n,1))^2+(y(i,1)-y(n,1))^2+(z(i,1)-z(n,1))^2)<64 && n~=i)%判断的疑问(2)自己看情况考虑哦
            d_0 = [d_0,sqrt( ((x(i,1)-x(n,1))^2+(y(i,1)-y(n,1))^2+(z(i,1)-z(n,1)).^2) )];
        end
    end
    % d_0 = [d_0,sqrt( ((x(i,1)-x(i+1,1)).^2+(y(i,1)-y(i+1,1)).^2+(z(i,1)-z(i+1,1)).^2) ) ];
end