在matlab中实现矩阵的乘法(一个易犯错误)

在matlab中实现矩阵的乘法(一个易犯错误)

在matlab中实现矩阵的乘法,我们时常会犯一些低级的错误,本经验就讲讲我在初学的时候常犯的一个矩阵乘法的错误。

首先不用说,矩阵的乘法肯定得遵循矩阵乘法的规定:左边矩阵的列数一定要等于右边矩阵的行数,即:要求a*b,则a和b的规模应该是m*n和n*m。

但是刚开始使用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}

于是在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 ]

计算两者的乘积:

c=a*b

结果出现如下的提示信息:

??? Function 'mtimes' is not defined for values of class 'cell'.

Error in ==> mtimes at 18

[varargout{1:nargout}] = builtin('mtimes', varargin{:});

也就是说不对呗

后面才发现,原来在一开始时我的矩阵的表示方法就错了,实际上应该是这样的:

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

然后计算c=a*b,enter后显示

c=

5/18

5/18

4/9

看出差别了吗?也就是说矩阵的表示不适用{ },而是使用的是[ ]。使用{ },其类型就为对象类型了;而[ ]才是矩阵类型,才能正确地进行矩阵的运算。