检查两个矩阵是否相等

时间:2019-04-01 10:46:18

标签: matlab for-loop equals

我在检查MATLAB中两个矩阵是否相等时遇到问题。

具体来说,我想验证一下对于矩阵W,所有元素是否彼此相等并且所有行总和等于1,我们将拥有W = W^2

因此,我编写了以下代码,目的是检查这两个矩阵的每个元素是否相等,以得出矩阵是否彼此相等的结论。但是事实证明,由于W8矩阵应等于其平方,因此这是行不通的。

for i = 1 :60
    for j = 1 :60
        if(W8(i,j) - W8_square(i,j) ~= 0)
            disp('the matrix are not equal');
            break;
        end
    end
end

1 个答案:

答案 0 :(得分:0)

有一个matlab函数: eq = isequal(W8,W8_square)应该起作用 在这里找到参考 https://www.mathworks.com/help/matlab/ref/isequal.html 请注意,如果这检查了精确身份,则eps数量级的计算错误可能会影响结果。 为了解决这个问题,我将两个矩阵相减并检查结果的范数:在某个阈值(低)以下,它们相等。 这里有一个解决问题的示例代码:

n = 10; %matrix size
W8 = ones(n)/n; %Generating W8
W8_square = W8^2; 
eq = isequal(W8,W8_square) %checking EXACT identity
M_difference = W8-W8_square; %Difference matrix
eq2 = isequal(M_difference<=eps,ones(n)) %%comparing every value with eps