声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3765|回复: 6

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

[复制链接]
发表于 2007-3-26 14:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

 楼主| 发表于 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 [a,b]=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=[100   110   120   130   140   150   160   170   180   190];
>> B=[45    51    54    61    66    70    74    78    85    89];
>> [a,b]=yoyo(A,B,10)
  a =

       0.4830


  b =

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

       0.4830   -2.7394

评分

1

查看全部评分

 楼主| 发表于 2007-3-27 11:10 | 显示全部楼层
以上是小弟我编写的程序
各位大侠看看,有什么不妥的地方没?
 楼主| 发表于 2007-3-27 11:12 | 显示全部楼层
忘记了.
编写程序根据的公式是:
发表于 2008-12-30 22:25 | 显示全部楼层

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

线性的东西就别往出来拿了,毫无意义!
发表于 2008-12-31 08:12 | 显示全部楼层

回复 5楼 anycall 的帖子

不是每个人都能懂很多, 有问题本就需要澄清, 应该不分难易吧!?
建议楼上的, 尽量尽量少用这些字眼!
发表于 2008-12-31 10:51 | 显示全部楼层

回复 沙发 yoyoo 的帖子

其实也不用那么复杂! 下面即可
A=[100   110   120   130   140   150   160   170   180   190];
B=[45    51    54    61    66    70    74    78    85    89];
aa=[A' ones(length(A),1)]; bb=B'; cc=aa\bb

[ 本帖最后由 ChaChing 于 2008-12-31 10:53 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-2 17:36 , Processed in 0.050008 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表