matlab中矩阵怎么敲_如何在Matlab中反转矩阵矩阵?

问题如下:

我有一组20个方程式:

r1 = s1*h1_1 + s2*h1_2 + ... s20*h1_20

r2 = s1*h2_1 + ...

...

r20 = s1*h20_1 + ...

其中r,s和h是矩阵,*表示逐点积.

它可以以矩阵形式R = H * S重写.我想为S求解这个等式 – 所以我需要计算inv(H)* R.但是如果H的每个元素都是矩阵,我怎么能计算inv(H)?我不能简单地将这些较小的矩阵连接成一个更大的矩阵H然后将其反转 – 因为这将得到与例如不同的结果不同的结果.用符号值反转矩阵H,然后用较小的矩阵代替这些符号值(因为方程组中存在逐点积).

到目前为止,我想出了一个解决方案.我将创建具有20×20符号值的矩阵H,我将其反转,然后我将使用’subs’评估所得到的反转矩阵的每个单元格.

H = sym('A',[20 20]);

invmat = inv(H) ;

% here I load 400 smaller matrices with appropriate names

invmat_11 = subs(invmat(1,1));

但是这种矩阵的反转很难在任何中型计算机上计算,因此我从未设法运行此代码.你知道计算矩阵H的反演还是直接求解S的其他方法吗?

我被问到一些简单的例子:

考虑等式R = H * S(S未知).假设H = [A B; C D],其中A,B,C,D是2×2矩阵,例如,

A = [A11 A12; A21 A22]

R和S是2×1矩阵,例如

R = [R1; R2]

要计算S,我需要求解inv(H)* R,符号为inv(H)=

[-D /(B * C – A * D),B /(B * C – A * D)]

[C /(B * C – A * D), – A /(B * C – A * D)]

现在我可以用实数2×2矩阵代替A,B,C和D并计算H的反演:

inv(H)= [H1 H2; H3 H4]

哪里

H1 = -D /(B * C – A * D)

这构成了inv(H)的计算.

现在我需要将inv(H)乘以R(以求解S):

S1 = H1 * R1 H2 * R2

S2 = H3 * R1 H4 * R2

但请注意,所有H1到H4和R1到R2都是矩阵,*表示逐点积.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值