當前位置:編程學習大全網 - 編程軟體 - matlab中怎樣編程解決非線性最小二乘擬合的參數問題?

matlab中怎樣編程解決非線性最小二乘擬合的參數問題?

1、出錯的直接原因是myfun1裏面的表達式有誤,應改為

y=(1-(1-x(:,1)).^beta(1)).^beta(2).*(1-(1-x(:,1)).^beta(3)).^beta(4);

即原來的乘號改為點乘。

2、建議改用lsqcurvefit進行最小二乘擬合,即把

beta=nlinfit(x,y,@myfun1,[0.5?0.5?0.5?0.5])

改為

beta=lsqcurvefit(@myfun1,[0.5?0.5?0.5?0.5],x,y)

我註意跟蹤了擬合的過程,nlinfit在開始的時候是正常的,擬合結果逐漸接近原始數據,但不知道什麽原因,到已經可以接受的結果時,忽然數據偏離很大,導致計算結果中出現Inf,因而算法失敗。

lsqcurvefit是優化工具箱提供的函數,而nlinfit是統計工具箱的函數,二者采用的算法應該存在差異,但限於時間精力,更深入的分析沒有進行,總之實測lsqcurvefit可以很好的實現擬合。

  • 上一篇:編程代碼外聯網
  • 下一篇:數字電路中使用的數字系統是
  • copyright 2024編程學習大全網