matlab中de 乘法符号,MATLAB中的*(乘)和.*(点乘)傻傻分不清?!

MATLAB中点乘和乘的运算

0、 问题场景

最近,学校开始有MATLAB计算的课开课啦。很多小朋友都来问我为什么他们的程序无缘无故报错,答案基本都是没有分清*和.*。那么我这里就来讲一讲这俩运算的区别。

1、定义

*:这个运算是矩阵乘法运算。MATLAB中默认的数据类型为矩阵。

.*:在运算符和前加一个点.,将该运算转换为数量乘法,矩阵对应位置元素相乘。

2、概述

MATLAB,我习惯把它称为matrix laboratory,矩阵实验室。在MATLAB中,除了符号变量和一些特殊的变量(如结构体、类)外,数据都是以矩阵来存放的。而学过线性代数的同学都知道,矩阵是一个二维的运算单元。矩阵的乘法、除法等是非线性运算,要求两个矩阵维度要满足转置后相同。

在MATLAB中输入

x=5

在右侧变量区双击变量x后,你会发现,显示的是1x1 double类型。意思是,x是一个1x1的矩阵,5是双精度浮点值,也就是说,x=[5]。

f05ae0d9438bd0931317935beda69a04.png

一个例子

现有矩阵x如下:

⎡1 2 3⎤

⎪4 5 6⎪

⎣7 8 9⎦ %机读格式为[1,2,3;4,5,6;7,8,9]

和矩阵y如下:

⎡1 0 0⎤

⎪0 1 0⎪

⎣0 0 1⎦ %机读格式为[1,0,0;0,1,0;0,0,1]

1、计算矩阵相乘(矩阵乘法):

x*y %乘,意味着矩阵乘法

结果为:

6599eed17e94ff008107ef4542e6e64a.png

2、计算每个元素相乘(数量乘法):

x.*y %点乘,意味着矩阵元素对应位置相乘

结果为:

877f2203670b551e058758ef264410d8.png

现在同学们大概能过体会这个差别了。

我们再看一个例子,这是一个求定积分的题目。用这个例子,我将告诉你报错的原因。

另一个例子

我们在做函数题的时候,变量都是符号型(symbols,syms)的。这些变量的赋值由一个一维向量(一行n列矩阵)来完成,运算结果也是使用一维向量来完成。

例题:求定积分:

30f51fb1b9cd3aa772e0857a273807e8.png

我们这里使用quad()函数来求:

a99b195b7a8fec52002f8272142e69b6.png

假如我们把机读格式公式中的.*(数量乘法)用、*(矩阵乘法)代替,会怎么样呢?

42cbc39db09c1af2c9aecdabafb0c61e.png

错误是:内部矩阵维度不匹配。

Q:哪里有矩阵?

A:请你细细解读公式。这个解析式包含两部分:一部分是x的三次项;一部分是e^x。在符号类型(symbol)表达的一个式子中,符号变量每出现一次,该变量就会联合系数、指数成为一个单独的运算单元,即一个矩阵。所以这个解析式可以看作是2x^3、e^x两个矩阵之间的操作。

在我们高数的函数求导求积分中,我们使用的运算都是数量运算(一维),而这里我们错误地使用了*(矩阵乘法,二维)。由于两个运算单元得出的矩阵维度不一致(每个单元的值域包含的元素个数不同),或者说得出的矩阵是一个无限集,那肯定是会报错的。

325d08d498b59399a48abf050434eba5.png

4a668feaa3018a2e1706f07e5002bcc8.png

Eric__Chu

发布了3 篇原创文章 · 获赞 1 · 访问量 47

私信

关注

标签:运算,傻傻,矩阵,相乘,MATLAB,分不清,变量,乘法

来源: https://blog.csdn.net/qq_40625251/article/details/104594337

  • 16
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值