Shi*_*a93 0 matlab matrix matrix-multiplication
我需要用MATLAB计算这个等式:
哪里Sn可以是矩阵或标量,我试图用它
S_A = S_3*S_5*((ones-(S_1*S_5)).^(-1))*S_2+S_4
Run Code Online (Sandbox Code Playgroud)
问题是它没有给我正确的结果和它似乎与差异的问题
但我无法理解为什么给我错误的结果.
结果应该是这个
但是MATLAB的结果是
我不明白为什么这两个结果不一样.我想到的唯一方法是通过这个
diff = ones-(S_1*S_5);
if S_1*S_5 == zeros %Perchè senza non funziona?
diff = ones;
else
diff = (ones-(S_1*S_5)).^(-1)
end
S_A = S_3*S_5*diff*S_2+S_4;
Run Code Online (Sandbox Code Playgroud)
但我不认为这是一个聪明的解决方案.谁知道为什么我没有得到正确的结果?
"我试着这样做S_A = S_3*S_5*((ones-(S_1*S_5)).^(-1))*S_2+S_4"
这里的问题是,A^(-1)在数学符号中意味着"采取逆",而你使用的A. ^(-1),请注意点,在MATLAB的符号中表示"将每个矩阵元素取为幂-1".无论如何,采用矩阵的逆矩阵在MATLAB中并不聪明,无论是通过inv()还是^(-1)使用mldivide:
S_A = S_3*S_5*(eye(size(S_1*S_5,1))-(S_1*S_5))\S_2+S_4
Run Code Online (Sandbox Code Playgroud)
此外,如提及布莱斯的回答使用eye,而不是ones创建一个单位矩阵,并给它一个尺寸参数,而不是什么都没有.总而言之,它让我觉得你没有掌握基本的MATLAB功能,所以我想向你们指出MathWorks自己的MATLAB教程.