Re: [問題] fit內含有convolution的函數已回收

看板MATLAB作者時間16年前 (2009/07/09 01:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《zupo (幫解MATLAB難題囧)》之銘言: : ※ 引述《shane ()》之銘言: : : 我想要利用fitting找出已知函數的兩個系數a和b : : 函數如下 : : a*conv(data,exp(-x/b)) : : 其中data是一組65*1的向量 : : 我想將函數跟另一組data2(65*1向量)做curve fitting : : 有簡單的方法可以辦到嗎 : : 還是必須自己寫最佳化? : 我不知道 curve fitting 可不可以辦到 : 數據寄給我試試看好了 : 畢竟MATLAB有內建工具箱就先用看看了 : 不過不是萬能低 我已經自行解決了,謝謝 解法如下 先打開conv 在最底下加c=c(1:65); 讓他的輸出長度為65 然後我的data如下 x=(1:65)'; func='a*conv([0.1787 ; -0.0657 ; -0.1026 ; 0.1404 ; -0.0616 ; -0.0472 ; -0.0843; 0.1314; -0.0064 ; -0.0056 ; 0.0221 ; 0.2052 ; 0.3293 ; 2.5290 ; 6.5226 ; 11.0232; 16.0099 ; 19.6062; 22.1473 ; 23.8168 ; 23.9907; 23.0039 ; 20.2178 ; 16.3854 ;12.3303 ; 8.9042 ; 6.3564 ; 4.3467 ; 3.1732 ; 2.5367 ; 1.9752 ; 1.5005 ;1.4293 ; 1.5227 ; 2.1383 ; 2.6412 ; 3.3427; 4.0246 ; 4.6822 ; 5.2611 ;5.7470 ; 5.9415 ; 6.0678 ; 5.9726 ; 5.9932 ; 5.7744 ; 5.4119 ; 5.1309 ; 4.9437 ; 4.7175 ; 4.2699 ; 4.0260 ; 3.7038 ; 3.5342 ; 3.6474 ; 3.4359; 3.2691 ; 3.3008 ; 3.3334 ; 3.2807 ; 3.3184 ;3.3992 ; 3.5619 ;3.5241 ;3.5337],exp(-x/b))'; data2=[-0.0469 -0.0726 -0.0664 -0.0339 -0.0537 -0.0141 0.0025 0.0115 0.0443 0.0331 0.0454 0.0450 0.0390 0.2874 1.1220 2.5624 4.7122 6.9506 8.8499 10.2470 11.0711 11.3270 10.1183 8.1172... 6.1044 4.4281 3.1147 2.1611 1.5137 1.0729... 0.7443 0.5679 0.5152 0.5184 0.5722 0.7342... 0.9340 1.1556 1.3784 1.5876 1.8106 1.9765... 2.0601 2.0909 2.0919 2.0433 1.9430 1.8474... 1.7176 1.6402 1.5426 1.4433 1.3325 1.2628... 1.2205 1.1626 1.1167 1.1415 1.1679 1.1353... 1.1181 1.1524 1.1828 1.2168 1.1872 ]'; s = fitoptions('Method','NonlinearLeastSquares','Startpoint',[1 1]); f = fittype(func,'options',s); [c2,gof2] = fit(x,data2,f); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.77.9
文章代碼(AID): #1ALDYdO4 (MATLAB)
文章代碼(AID): #1ALDYdO4 (MATLAB)