matlab 曲线拟合--视频编码中PSNR计算及码率计算(1)

Matlab R2009a 

matlab 曲线拟合分为多项式拟合和一般曲线拟合

 一、多项式拟合

用到的函数为:

a=polyfit(xdata,ydata,n);

n表示多项式的最高阶数;

(我遇到的问题是要拟合一般曲线,因此多项式拟合带过);

 二、一般曲线拟合

 [para,resnorm] = lsqcurvefit(fun, x0, xdata, ydata);

 其中para便是我想要的一般曲线中的系数;

比方说我要拟合如下函数的系数,a,b,c,d

y = (a + b*x + c*x2)/(x + d) 

那么para=[a,b,c,d];

 x0: 是给定的一个para的初始值;这里有自己来定,我看有人给的全是1,我也照此做,是可行的。

xdata:就是自变量x的已知系数;

ydata:就是自变量y的已知系数;

 

 举例:

%myfun.m

function SNR = myfun(a,bit)
SNR
= (a( 1 ) + a( 2 ) * bit + a( 3 ) * (bit. ^ 2 )). / (bit + a( 4 )); 

 %curve.m

 bs_bit=[47304.38,19553.66,8973.04,4603.99];

bs_SNR = [ 47.661 , 45.280 , 43.107 , 40.882 ];
lb
= [];
ub
= [];
[para,res]
= lsqcurvefit(@myfun,ones( 1 , 4 ),bs_bit,bs_SNR,lb,ub,optimset( ' MaxFunEvals ' , 16000 , ' MaxIter ' , 800 ));

 这里我们看到需要为lsqcurvefit定义两个option;

MaxFunEvals和MaxIter

这里我认为算法用来拟合数据所需要的迭代次数;

 

转载于:https://www.cnblogs.com/liuokay/archive/2011/08/06/2129475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值