作者ejialan (eji)
看板MATLAB
标题Re: [讨论] 请问线性回归曲线的语法如何写???
时间Tue Sep 11 13:57:43 2012
※ 引述《iammyfriend (先承认你就是你朋友)》之铭言:
: x = 0.3 0.6 0.9 1.2 1.5 1.8 2.1 2.4 2.7 3.0
: y = 10.2 9.8 12.5 13.6 13.1 16.4 17.3 17.1 18.5 19.5
: 回归曲线 y = a + b*sin(x) + c*x^2
: 我要求的是a,b,c的矩阵(3x1矩阵)
: 要怎麽写的原理我是懂
: 先化成矩阵 然後以反矩阵的方法求出{a,b,c}
: 只是语法每次写都失败 而且书上只有教概念 没教语法的写法
: 想请各位高手教一下 语法的写法
: 唉 小妹想刚学matlab .. 我的语感太差了
基本上这已经不是线性回归了
不过原理还是一样用Least Squares Method
语法的问题可以找一本中文书慢慢摸
以这题其实主要只会用到.* .^对向量作元素的*与次方运算
以及sum把向量加总
A=[10 sum(sin(x)) sum(x.^2)
sum(sin(x)) sum(sin(x).^2) sum(x.^2.*sin(x))
sum(x.^2) sum(sin(x).*x.^2) sum(x.^4)];
B=[sum(y)
sum(y.*sin(x))
sum(y.*x.^2)];
coeff=inv(A)*B
其中coeff的三个分量分别对应a,b,c
而这行又可以换成
coeff=A\B
因为inv(A)会真的把反矩阵求出 而A\B只是求解线性代数方程
效率和精度都比较高
另外matlab其实有toolbox可以用
如果你不想自己写语法可以使用
cftool(x,y)
叫出GUI介面
然後点 Fitting -> New fit -> Type of fit 选 Custom Equations
-> New equation -> General Equations
=右边输入 a+b*sin(x)+c*x^2
-> ok -> Apply
就可以看到fitting完的结果
剩下的你可以自己摸索
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.146.175