在matlab中实现矩阵的乘法(一个易犯错误)
1、首先不用说,矩阵的乘法肯定得遵循矩阵乘法的规定:左边矩阵的列数一定要等于右边矩阵的行数,即:要求a*b,则a和b的规模应该是m*n和n*m。
2、但是刚开始使用matlab的时候,在matlab中输入矩阵时,我的输入形式是这样的:
a={1/3,1/2,0;1/3,0,1/2;1/3,1/2,1/2}
b={1/3;1/3;1/3}
3、于是在enter之后就会出现:
a=
[1/3 ] [1/2 ] [ 0 ]
[1/3 ] [ 0 ] [1/2 ]
[1/3 ] [1/2 ] [1/2 ]
b=
[1/3 ]
[1/3 ]
[1/3 ]
4、计算两者的乘积:
c=a*b
结果出现如下的提示信息:
??? Function 'mtimes' is not defined for values of class 'cell'.
Error in ==> mtimes at 18
[varargout{1:nargout}] = builtin('mtimes', varargin{:});
也就是说不对呗
5、后面才发现,原来在一开始时我的矩阵的表示方法就错了,实际上应该是这样的:
a=[1/3,1/2,0;1/3,0,1/2;1/3,1/2,1/2]
b=[1/3;1/3;1/3]
enter之后分别显示的是
a=
1/3 1/2 0
1/3 0 1/2
1/3 1/2 1/2
b=
1/3
1/3
1/3
6、然后计算c=a*b,enter后显示
c=
5/18
5/18
4/9
7、看出差别了吗?也就是说矩阵的表示不适用{ },而是使用的是[ ]。使用{ },其类型就为对象类型了;而[ ]才是矩阵类型,才能正确地进行矩阵的运算。