您的位置:首页 > 编程语言 > MATLAB

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

2011-08-06 15:14 495 查看
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

这里我认为算法用来拟合数据所需要的迭代次数;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: