作业帮 > 综合 > 作业

matlab中*与.*有何区别?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 14:12:08
matlab中*与.*有何区别?
内联函数的定义中,比如
f=inline('x*sin(x)')与f=inline('x.*sin(x)')
两者的乘法*,一个有点一个没有点,在调用时有时会报告第一种定义下错误,请问它们有何区别?
感谢前面两位的回答,对于矩阵的点乘运算我是知道的。
这里的函数应该是符号函数,没有用到矩阵的乘法吧,应该是两码事吧?
希望最好有权威的说法,不要自己猜测
我把一个应用放在这里,你们来分析一下:
如上:f=inline('x*sin(x)');quad(f,0,pi/4)
运行出现错误
如果改为 f=inline('x.*sin(x)');quad(f,0,pi/4),得到
ans =
0.1517
首先第一点,你必须铭记在心,就是matlab是在用矩阵的形式储存变量,运算变量,这就是matlab的特点,也是它强大之处
正因为matlab在设计的时候就是为矩阵计算设计的,因而在matlab中 * (乘)就是用矩阵的乘法去求答案,所以要求乘号两边的变量要满足矩阵运算要求,比如c=a*b,a如果是3行2列,那b就必须是2行n列,得出的c就是个3行n列的矩阵。这也就是为你说说“在调用时有时会报告第一种定义下错误”。你的x和sin(x)满足矩阵乘法规则吗?(就是说x的列数等于sin(x)的行数)
但有时我们要求a乘b矩阵是:a矩阵的每一个元素去乘以b矩阵的对应元素,得出的数做c的对应位置的元素。比如a=[1 2 3] b=[2 3 4] 则c=a.*b
c=[1*2 2*3 3*4]=[1 6 12] .*(点乘)要求a与b是同种形式的矩阵,即行数和列数都相等!
更详细的你自己慢慢试着体会吧,多用就明白了!
第二个是对的,x和sin(x)同为一行n列,楼上的口误了
你的那两个程序段,我分别命名为ab和abc
以下是运行结果:
>> x
x =
1 2 3 4 5 6 7 8
>> ab(x)
f =
Inline function:
f(x) = x.*sin(x)
>> abc(x)
f =
Inline function:
f(x) = x*sin(x)
没有问题,我是matlab7.1,要不你把你与此程序相连的程序段写出来看下