非线性曲线的matlab拟合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非线性曲线的matlab拟合?相关的知识,希望对你有一定的参考价值。

我有以下数据:
x=【367 379 414 455 516 604 740 949】
y=【1.8350 1.7055 1.6560 1.5925 1.5480 1.5100 1.4800 1.4235】
可以画个折线图,现在要拟合成平滑曲线,polyfit拟合的不是很好,还有别的好办法拟合一下吗?我试了一些方法,不太理想,恳求高手不要空谈,给一些实践性的指点,如果不是很复杂,帮小弟调一下画个图看看,叩谢!!
请问不要求过每个点的那种拟合用什么函数?

x=[367   379   414   455   516   604   740   949];

y=[1.8350    1.7055    1.6560    1.5925    1.5480    1.5100     1.4800    1.4235];

h1=figure(1)

h2=subplot(2,2,1)

pp=spline(x,y); %三次样条插值函数拟合(左上图)

fnplt(pp)

h3=subplot(2,2,2)

p=polyfit(x,y,10);%多项式曲线拟合(右上图)

plot(x,y,'k-')

h4=subplot(2,2,3)

p=lagrange(x,y); %拉格朗日法拟合(左下图)

polyval(p,x);

plot(x,y,'k-')

多项式曲线与拉格朗日法拟合的曲线是比较平滑的

参考技术A

x=[367   379   414   455   516   604   740   949]

y=[1.8350    1.7055    1.6560    1.5925    1.5480    1.5100     1.4800    1.4235]

c=polyfit(x,y,5)

 plot([367:10:949],polyval(c,[367:10:949]))

 hold on

 plot(x,y,'*')

你要这样的代码试试啊,不是polyfit拟合不好,是你选的阶次不够高!

参考技术B

可用matlab曲线拟合工具箱,里面有各式各样的拟合函数可供选用...

x=[367   379   414   455   516   604   740   949]

y=[1.8350    1.7055    1.6560    1.5925    1.5480    1.5100     1.4800    1.4235]

cftool(x,y)

本回答被提问者采纳
参考技术C 匿名函数调用,把inline那一行改为,应该就OK
myfunc=@( beta, x) -beta(1)*max(x).*exp(-pi*(x-beta(2)).^2/beta(3).^2);

2楼基本上已经说到点上了,但是转换成(max(y))也是不可行的。num2str的变量为常数。例如
for n = 1:12
eval(['M' num2str(n) ' = magic(n)'])
end
最好还是写成具体的函数形式。

或者单个函数 function y=f(x)
或者匿名函数 fun=@(x) x.^2

以上是关于非线性曲线的matlab拟合?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中如何拟合光滑曲线

MATLAB实例:非线性曲线拟合

matlab非线性拟合问题

matlab拟合曲线的方法有几种

matlab求非线性拟合

matlab 非线性曲线拟合表达式书写与初值选取