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

2025-10-22 16:56:31

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢