如何在MATLAB中编写自己的最小二乘法程序
小弟刚开始学习MATLAB,是个菜菜鸟.想向大侠们求助一个问题怎么在MATLAB中编写自己设计好的最小二乘法算法程序,然后
运用这个程序解决自己实际遇到的系统辨识问题.
例如运用最小二乘递推算法 问题为研究某一化学反应过程中, 温度℃)对产品得率(%)的影响, 测得数据如下:
温度℃)
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 以上是小弟我编写的程序
各位大侠看看,有什么不妥的地方没? 忘记了.
编写程序根据的公式是:
线性的东西就别往出来拿了,毫无意义!
线性的东西就别往出来拿了,毫无意义!回复 5楼 anycall 的帖子
不是每个人都能懂很多, 有问题本就需要澄清, 应该不分难易吧!?建议楼上的, 尽量尽量少用这些字眼!
回复 沙发 yoyoo 的帖子
其实也不用那么复杂! 下面即可A=;
B=;
aa=; bb=B'; cc=aa\bb
[ 本帖最后由 ChaChing 于 2008-12-31 10:53 编辑 ]
页:
[1]