MATLABで非線形曲線近似する

※このページでは数式を表示するためにKaTeXを使用しています.スマホでお読みの方はブラウザのURLの"amp=1"を"amp=0"に変えて下さい


非線形曲線近似する最低限のソースコードを載せました

Case.1 減衰振動のデータの近似

$ y = 12.5e^{-0.2t}\sin(t) $で減衰振動する物体の時刻tでの位置yの計測値、tdataとydataを考えます


MATLAB 非線形近似 減衰振動


コードを見る(クリックして下さい)


減衰振動のデータを非線形曲線近似する

あとはプロパティインスペクターでグリッド入れたり、ラベルやタイトルを入れます

Case.2 LPFの利得の周波数特性

利得の周波数特性が$ G = \frac{1000}{j\omega+1000} $と表されるLPFについて、その計測値の近似曲線を求めます

dB単位では$ G = 20\log_{10}{\frac{1000}{j\omega+1000}}\,[\mathrm{dB}] $となります


LPF 利得 周波数特性



コードを見る(クリックして下さい)


LPFの利得の周波数特性のデータを非線形曲線近似する

Case.3 インパルス電圧印加時の火花電圧の推定

棒ー平板電極にインパルス電圧を印加したときの火花電圧を推定します
直流や交流のときの火花電圧を知りたいのであれば、少しずつ印加電圧を上げていき火花放電が起きたときの値を使えばいいですが、インパルス電圧を印加する場合は印加電圧を変えてそのときの火花放電率を計測して推定する必要があります
その方法には補間法や昇降法がありますが、ここでは火花放電率Pは印加電圧Vに関する正規累積分布に従うとして、正規累積分布にフィッティングし、その結果から火花放電率と標準偏差を推定してみます


MATLAB 非線形近似 火花放電率 不平等電界


コードを見る(クリックして下さい)


インパルス電圧印加時の火花電圧の推定



フィッティングの結果、計測した条件での火花電圧は102.5±5.8 kVと推定できました。


この方法は昇降法や補間法より正確ですが、100回以上印加する必要がありかなり大変ですし、印加してるうちに供試物がストレスで火花電圧が変動する可能性もあります
そのため、より少ない回数で火花電圧を推定する補間法や昇降法が一般に使われます


グラフ中のerfcとは相補誤差関数で、標準正規分布の累積分布関数を意味します


参考
正規累積分布関数 - MATLAB normcdf - MathWorks 日本
誤差関数とは - simonの開発日記

おわりに

上の例では標本値を作るところから始めていますが、実際にはデータをテーブル形式でインポートし(EPLとする)、次のようにすればいいです

xData = EPL.x
yData = EPL.y

(そのままk = lsqcurvefit(p, k0, EPL.V, EPL.P)としてももちろん良いです。その方が余計に変数が増えないので筆者はよくそうします。)


もっと詳しく知りたい方はこちらへ
非線形曲線近似 (データ適合) 問題を最小二乗近似的に解く - MATLAB lsqcurvefit - MathWorks 日本


線形・多項式モデルの近似はこちらへ
www.charter-blog.com