非线性曲线的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-')
多项式曲线与拉格朗日法拟合的曲线是比较平滑的
参考技术Ax=[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那一行改为,应该就OKmyfunc=@( 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拟合?的主要内容,如果未能解决你的问题,请参考以下文章