关于matlab中矩阵的运算

比如有三个矩阵A,B,M,且A*B=M,已知A和M,怎么能求出B矩阵,麻烦也附上matlab的程序

lz 你好
对于你这个问题,从线性代数分析,A*B合法的要求是A的列要与B的行相等
假设A为nXm矩阵
B为mXc矩阵
那么M肯定为nXc的矩阵

在matlab中 求解A*x=b,有三种方法,
1、x=A\b
2、x=inv(A)*b
3、x=A^(-1)*b
推荐使用第一种,因为求解逆矩阵,要求A是方正。第一种方法就不要求
例如:
A=[1 2;5 2;4 7];%3x2
M=[3 5 2 6;6 3 4 5;5 4 6 6];%3x4
B=A\M%2X4

结果:
B =
1.1348 0.3678 0.5819 0.7242
0.1335 0.5139 0.5390 0.6146

希望能帮助到你追问

我拿已知的三个矩阵验证了一下第一个方法,计算出来的矩阵和我手上已知的矩阵不一样啊,我的是正数,可是计算出来的全是小数或者0,是哪里出问题了呢?

追答

有些应该是不满足线性代数中方程组有解的条件。有时候可能出现奇异,解出来是不对的。
例如:
A=[1 2;5 2;];b=[3;6];X=A\b%唯一解

结果:
X =
0.7500
1.1250

%验证
A*X
ans =
3.0000
6.0000

有多解情况
A=[1 2 5 ;2 4 7];b=[2;4];X=A\b

结果:(计算机只取了一个解)
X =
0
1
0
A*X%验证
ans =
2
4

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-06
A=[...] %n×n矩阵
M=[...] %n×n矩阵
B=A'*M追问

A和M都不是n*n的矩阵,怎么在matlab中实现呢??

第2个回答  2013-06-06
B=(A^-1)*M
前提是A行和列数相等
如果不等就是
B=((A'*A)^-1)*A'*M追问

请问你说的这个在matlab里怎么用程序实现呢,我第一次用matlab不会

追答

直接敲出来就可以,先给矩阵赋值
A=[1 2;2 3]这样的,分号表示一行

追问

我的意思是那个运算法则怎么用程序实现呢?直接输入B=((A'*A)^-1)*A'*M这个,它就能运算出来么?

追答

对,'是转置的意思,^-1就是求个逆,别的你都知道了吧

追问

我按照你的语句输入了,可以他计算出来的结果不是数字,全是Inf,怎么回事啊?