matlab中为什么这条语句: y=1./(1+25*x.^2) 中必须要加点(即英文状态下的句号)?

matlab中用三次多项式拟合这个方程:y=1/(1+25*x^2),代码如下:x=-1:0.01:1 y=1./(1+25*x.^2) p1=polyfit(x,y,3) y1=polyval(p1,x) plot(x,y,x,y1)为什么这条语句: y=1./(1+25*x.^2) 中必须要加点(即英文状态下的句号)?

首先x是一个数组,x=[-1 -0.99 -0.98 ....1]由语句x=-1:0.01:1产生。对数组做除法或者平方是没有意义的,因为Matlab支持矩阵运算,所以不是默认对数组做平方运算是对所有元素作平方运算。若想对数组每一个元素作平方运算,那么应该用x.^2,运算符,同时./(两个字符是一个运算符)指的是对数组每一个元素进行运算,同时将每一次运算结果返回。当然不是覆盖而是也存进一个数组。其实y=1./(1+25*x.^2) 这句话也可以用循环做。类似于for i=1:size(x) y(i)=1/(1+25*x(i)^2);
end
总而言之要想对一个数组所有元素进行运算需要用./和.*之类的运算符,而不是/或者*,因为这意思矩阵运算符,会产生歧义。不明白可追问。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-11
首先区分matlab中两种乘法(除法),对于标量来说一般不加点如x=5,x/5=1.而对于矢量加点表示对于其中每一个的元素都进行乘法(除法)而不是矢量运算,如x=[1,,2],x./5=[0.2,0.4].
相似回答