矩阵乘法和差异

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)

但我不认为这是一个聪明的解决方案.谁知道为什么我没有得到正确的结果?

Adr*_*aan 5

"我试着这样做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教程.