如何使matlab中曲线平滑?

如何使matlab中曲线平滑?,第1张

有两种方法可以画平滑曲线,第一罩备种是拟合的方法,第二种是用spcrv。

其实原理应该都一样就是插值。下面是源程序,大家可以根据需要自行选择,更改拟合的参数。

clc,clear

a = 1:1:6  %横坐标

b = [8.0 9.0 10.0 15.0 35.0 40.0]%纵坐标

plot(a, b, 'b')   %自然状态的画图效果

hold on

%第一种,画平滑曲线的方法

c = polyfit(a, b, 2)  %进行拟合,c为2次拟物前毁合后的系数

d = polyval(c, a, 1)  %拟合后,每一个横坐悔颂标对应的值即为d

plot(a, d, 'r')       %拟合后的曲线

plot(a, b, '*')       %将每个点 用*画出来

hold on

%第二种,画平滑曲线的方法

values = spcrv([[a(1) a a(end)][b(1) b b(end)]],3)

plot(values(1,:),values(2,:), 'g')

要是你的数信段耐据是线性的话,可以用多项式拟合:

polyfit(x,y,n) n为所需要拟合多项式的次数,返回值为多项式系数;

若是非线性的话,你得有一个和你绘图曲线吻合的函数模型,然后在这个函数模型基础上求这个函数模型的参数,非线性拟合可以滑春用:

lsqcurefit(fun,x0,xdata,ydata) fun是函数模型,燃悔x0是初值;

多元的非线性拟合可以用:nlinfit(x,y,fun,beta0) beta0是初值。

若是知道曲线是几种基础函数的合成的话,可以利用原始的最小二乘法拟合函数,在网上随便找一下最小二乘法的程序m文件,添加进去就能用。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8264720.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存