这个问题在这里已有答案:
我在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函数: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