matlab中*与.*有何区别?

2024年11月22日 13:24
有2个网友回答
网友(1):

首先第一点,你必须铭记在心,就是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,要不你把你与此程序相连的程序段写出来看下

网友(2):

http://zhidao.baidu.com/question/58734583.html
这个是讲quad的,quad涉及了向量问题啊,向量问题就涉及到点乘问题啊,你仔细看看吧。
给你一个权威的例子:
8.6.3.3 内联函数创建和应用示例
【*例8.6.3.3-1】演示:内联函数的第一种创建格式;使内联函数适于“数组运算”。
clear,F1=inline('sin(rho)/rho') %第一种格式创建内联函数
F1 =
Inline function:
F1(rho) = sin(rho)/rho

f1=F1(2) %内联函数的一种使用方法
f1 =
0.4546

FF1=vectorize(F1) %产生适于“数组运算”的内联函数
xx=[0.5,1,1.5,2];ff1=FF1(xx)
FF1 =
Inline function:
FF1(rho) = sin(rho)./rho
ff1 =
0.9589 0.8415 0.6650 0.4546

【*例8.6.3.3-2】演示:第一种内联函数创建格式的缺陷;含向量的多宗量输入的赋值。
G1=inline('a*exp(x(1))*cos(x(2))'),G1(2,[-1,pi/3])
G1 =
Inline function:
G1(a) = a*exp(x(1))*cos(x(2))
??? Error using ==> inline/subsref
Too many inputs to inline function.

G2=inline('a*exp(x(1))*cos(x(2))','a','x'),G2(2,[-1,pi/3])
G2 =
Inline function:
G2(a,x) = a*exp(x(1))*cos(x(2))
ans =
0.3679

【*例8.6.3.3-3】演示:产生向量输入、向量输出的内联函数;这种向量函数的调用方法。
Y2=inline('[x(1)^2;3*x(1)*sin(x(2))]')
argnames(Y2) %观察内联函数的输入宗量
Y2 =
Inline function:
Y2(x) = [x(1)^2;3*x(1)*sin(x(2))]
ans =
'x'

x=[4,pi/6]; %向量输入的赋值
y2=Y2(x) %获得向量输出
y2 =
16.0000
6.0000

【*例8.6.3.3-4】演示:最简练格式创建内联函数;内联函数可被feval 指令调用。
Z2=inline('P1*x*sin(x^2+P2)',2) %必须是大写字母P
Z2 =
Inline function:
Z2(x,P1,P2) = P1*x*sin(x^2+P2)

z2=Z2(2,2,3) %直接计算内联函数
fz2=feval(Z2,2,2,3) %注意:这里,应写Z2,不能写成 'Z2' 。
z2 =
2.6279
fz2 =
2.6279

http://www.hdubbs.com/viewthread.php?tid=11841这个网站回答了匿名函数和关联函数的某些区别。