Rioja 发表于 2007-4-10 13:51

谁有这个函数阿 lsqcurvefit(Optimization tool)

我没有这个工具包Optimization too。。。能帮忙贴一下吗 oder mailen....$送花$ $送花$ $送花$

911Turbo 发表于 2007-4-10 20:00

已经pm你了,可以msn加我,我可以传给你,不过因为这个函数可能还睡调用另外的函数,不能保证copy给你,你就能用

leiwang81 发表于 2007-4-10 20:58

我想到有两个办法
-你装一个optimization toolbox
-你可以用现成的matlab有的函数,自己写一个用最小二乘法曲线拟合函数。如果你所遇到的问题是线性问题的话(线性回归问题),matlab有直接解决线性回归问题的函数,不需要任何toolbox。

recbio 发表于 2007-5-16 23:14

关于线性问题我来补充一下,就是什么样的问题可以化为线性问题处理?
比如

Y = f(x) = A1 + A2 * x + A3 * X ^2 + A4 * X ^3;
A1 ~ A4 是拟合参数,就是一个典型线性方程。对于这个方程,用最小二乘法可以直接解决:

假如有100个数 :

x = rand( 100 , 1);

拟合的方程是:

y =0.7 + 33 * x + 7 * x.^2 +2.7 * x.^3 ;

这里我们加点噪声:
y = y + randn (100,1) * 0.05;

到这一步,我们假设了 A1 ~ A4 分别是 0.7, 33, 7, 2.7;
x, y 都是 100个数的一维矩阵

如何用最小二乘法呢?

过程如下:
1)建立一个自变量矩阵 X (100 , 4),具体步骤:

X(:,1)=ones(100 , 1);
X(:,2)=x;
X(:,3)=x.^2;
X(:,4)=x.^3;

2)用backslash 运算:
a = X\y;

然后呢?完了!
不信?
显示一下 a: a =

    0.6952
   33.0483
    6.8306
    2.8365
------------------------------------------------

是的,就是这么简单!只要一步 "\" backslash运算。
页: [1]
查看完整版本: 谁有这个函数阿 lsqcurvefit(Optimization tool)