yoyoo 发表于 2007-3-26 14:19

如何在MATLAB中编写自己的最小二乘法程序

小弟刚开始学习MATLAB,是个菜菜鸟.想向大侠们求助一个问题
怎么在MATLAB中编写自己设计好的最小二乘法算法程序,然后
运用这个程序解决自己实际遇到的系统辨识问题.
例如运用最小二乘递推算法

yoyoo 发表于 2007-3-27 11:07

问题为研究某一化学反应过程中, 温度℃)对产品得率(%)的影响, 测得数据如下:

温度℃)
100   110   120   130   140   150   160   170   180   190

得率(%)
45    51    54    61    66    70    74    78    85    89


程序编写思路为: 任意给定两个集合A (此处表示温度)、B(此处表示得率), 由公式(*)可定义两个二元函数(集合A和B为其变量)分别表示 a 和 b .即y=ax+b;

%编写M文件
function =yoyo(A,B,n)
sum1=0;sum2=0;sum3=0;sum4=0;
for i=1:n
    sum1=sum1+A(1,i)*B(1,i);
    sum2=sum2+A(1,i);
    sum3=sum3+B(1,i);
    sum4=sum4+A(1,i)*A(1,i);
end;
a=(n*sum1-sum2*sum3)/(n*sum4-sum2^2);
b=1/n*sum3-a/n*sum2;
%输入集合A和B
>> A=;
>> B=;
>> =yoyo(A,B,10)
a =

       0.4830


b =

   -2.7394
%用MATLAB自带函数验证结果
>> c=lsqcurvefit('abc',,A,B)
   c =

       0.4830   -2.7394

yoyoo 发表于 2007-3-27 11:10

以上是小弟我编写的程序
各位大侠看看,有什么不妥的地方没?

yoyoo 发表于 2007-3-27 11:12

忘记了.
编写程序根据的公式是:

anycall 发表于 2008-12-30 22:25

线性的东西就别往出来拿了,毫无意义!

线性的东西就别往出来拿了,毫无意义!

ChaChing 发表于 2008-12-31 08:12

回复 5楼 anycall 的帖子

不是每个人都能懂很多, 有问题本就需要澄清, 应该不分难易吧!?
建议楼上的, 尽量尽量少用这些字眼!

ChaChing 发表于 2008-12-31 10:51

回复 沙发 yoyoo 的帖子

其实也不用那么复杂! 下面即可
A=;
B=;
aa=; bb=B'; cc=aa\bb

[ 本帖最后由 ChaChing 于 2008-12-31 10:53 编辑 ]
页: [1]
查看完整版本: 如何在MATLAB中编写自己的最小二乘法程序