
有两种方法可以画平滑曲线,第一罩备种是拟合的方法,第二种是用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文件,添加进去就能用。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)