检查两个矩阵是否相等[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我在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
matlab for-loop equals
1个回答
0
投票

有一个matlab函数:eq = isequal(W8,W8_square)应该工作在这里你找到参考https://www.mathworks.com/help/matlab/ref/isequal.html小心如果这检查了EXACT身份,那么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
© www.soinside.com 2019 - 2024. All rights reserved.