我在检查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
答案 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