2012-09-25 167 views
0

我想實現一個例程來擬合我的實驗中的電泳數據。Matlab非線性,多參數曲線擬合問題

目標是根據數據集中峯的面積,從電泳圖中峯的相對面積推導出生物體相互作用的動力學參數。

由於所有相關的微分方程是已知的,因爲該組方程的具有解析解,如下所述:

Analytical solution manuscript

我設定有關輸入的相關等式(6,8,13,。 ..從參考手稿)在matlab中。

這樣創建的函數可以工作,我可以用它來模擬相互作用物種的電泳圖譜。我現在想用函數來擬合實驗數據並檢索參數(總共8個,Va,Vc,MUa,MUc,k,A0,C0,基線噪聲)。

其中一些顯然是相關的。例如值可能是(給予其規模的想法):

params0 = [ ... 
      8.44E-02; ... % Va 
      1.25E-01; ... % Vc 
      5.32E-05; ... % MUa 
      8.87E-05; ... % MUc 
      4.48E-03; ... % k 
      6.06E-01; ... % A0 
      3.00E-00; ... % C0 
      4.64E-03 ... % noise 
     ]; 

我的問題是,如果我提供的實驗數據和嘗試類似lsqcurvefit:

[x,resnorm,residual] = lsqcurvefit(@(param,xdata) Electropherogram2(param,xdata,column), params0, time, ydata,lb, ub); 

我往往得到的結果非常差,因爲我要麼用完了迭代,我碰到了一些(顯然不合適的)本地最小值或任何其他值...

只有當我用起始值和允許的間隔修改很多(即因爲我知道可能通過其他實驗的值)我最終會得到或多或少的d即使這樣,適合性也不如原始手稿中報道的那麼好。 3)。

該手稿的作者使用了Excel求解器,並且足夠提供圖3中使用的原始數據,但我似乎無法完全符合他們的要求,幾乎沒有提供幾乎正確的起始值。

我沒有足夠的經驗知道我可以調整什麼,使這個過程更少的反覆試驗。

會像全局優化工具箱幫助我嗎?

任何提示,歡迎...

+0

這些問題非常討厭。使用8個自由變量,問題變得非常困難,初始值的小改變使最終值有很大差異。你跑什麼樣的測試?我的意思是你能設計你的測試,以便某些術語變得無足輕重?任何通過將數據推入求解器來解決此問題的嘗試都可能不起作用。如果您的測試可以解耦一些參數,我會很感興趣。 – macduff

+0

嗨macduff,您的評論似乎證實了我的擔憂。參考文獻的作者在這方面做了大量的工作,但呈現出來似乎可以很容易地應用這些擬合。然而,我認爲他們也只是「獨眼」設置參數並基於獨立的數據,並讓lsq例程只關注最終的調諧...... MUa和MUc(擴散率)不能準確地獨立確定,而不會經過極端的數量麻煩...... A0和C0基本上是未知的,因爲你需要k(和相關的Kd)在平衡狀態下知道它們。 – Kris

+0

如果任何參數都是線性的,您可以使用[可分離](http://www.mathworks.com/support/solutions/en/data/1-18E03/index.html?product=OP&solution=1-18E03)問題。分別擬合線性和非線性參數可顯着提高收斂性。此外,全局優化工具箱可以提供幫助。 – Jonas

回答

1

在提到文件(「分析解決方案稿件」),這是暗示,自由的優化參數是五(VA,VC,MUA,MUC,k)和不是八顆因爲(Aeq/Ceq)比率可以從它們的代表方程計算出來, 8代表Aeq和(明顯)eq。 6爲Ceq。

在我看來,什麼是更麻煩的是以下產品的模型的外觀,包括免費的優化參數:

  1. k和弗吉尼亞州的EQ。 12
  2. MUc和Va在等式中的epsilon_A等式中。 12
  3. MUa和Vc在等式中的epsilon_A等式中。12

一般而言,非線性優化算法在優化自由參數時存在合法性問題,當後者對在非線性模型中顯示爲乘積時。