在matlab中无法将向量的范数与1进行比较

1 matlab

我试图找出矩阵是正交的.我首先检查矢量是否正常

for j=1:2;
    if norm(S:,j) ~= 1;
        return; % Not normal vector
    end
end
Run Code Online (Sandbox Code Playgroud)

但是当规范返回1.0000时,将其与1比较为真,函数返回,这不是我想要的.有任何想法吗?

谢谢

pto*_*ato 6

您无法比较浮点值是否相等.您应该阅读每个计算机科学家应该知道的关于浮点运算的内容.

解决方案是检查是否abs(norm(s:,j) - 1)大于某个最小可接受差异.