angueyuan 发表于 2011-4-19 22:01:08

基于最大误差最小的数据一阶线性拟合编程

我们知道数据拟合原则有:1.使最大绝对误差最小原则:E=max(abs(每一项误差))
2.使平均绝对误差最小原则:E=1/n(sum(abs(每一项误差)))
3.误差平方和最小(最小二乘准则):这个是matlab的拟合函数使用的一种原则,如plotfit

而前两种原则就要自己编程了,我以第二条原则编了如下程序,在7.10.0版本上可以很好运行的程序:
function p=pinjun(x,y)
n=length(x);
syms a b;
sum=0;
for i=1:1:n
      theta=abs(a*x(i)+b-y(i));
      sum=sum+theta;
end
f=inline(sum,'a','b');
ff=@(x)f(x(1),x(2));
= fminsearch(ff,[-1, 1]);
p=x;
调用方式:p=pinjun(x,y)

但我试着用第一条原则编时,遇到了困难,希望哪位有识之士可以为我们解答;
注意:我们只要一阶线性拟合就行了
页: [1]
查看完整版本: 基于最大误差最小的数据一阶线性拟合编程