作者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