手習ひデジタル信号処理(204) Scilab、{Scilabデモ}、2次関数フィッティング

Joseph Halfmoon

信号処理素人老人がScilabの「信号処理のデモ」脱出。前回までSUNDIALSソルバによるシミュレーションを鑑賞。今回からは「最適化とシミュレーション」です。最初に登場するのが非線形のフィッティングであります。測定データに対してパラメータ化されたモデルを当てはめてくれるもの。今回はパラボラ(2次関数)みたいっす。

※「手習ひデジタル信号処理」投稿順 Indexはこちら

※Windows11上の    Scilab2024.0.0を使用させていただいております。(Scilabについては御本家 Scilab 様へ)

今回「鑑賞」させていただくScilabのデモ

今回から新たなカテゴリに侵入。今回は以下のデモを味あわせていただきます。

最適化とシミュレーション>datafit: Nonlinear fitting>Parabolic model(3 params)

なんやら「測定データ」に対してパラメータ化されたモデル(非線形)をフィッティングする例ってことみたいです。非線形でも「いっちゃん簡単なやつ」ということでモデルは2次関数(曲線を描けば放物線=パラボラ)です。以下のデモ選択ウインドウから選択できるものです。selectPrarabolicModel

なお、デモのスクリプトは、以下のファイルです。

datafit.dem.sce

デモの実体は、非線形最小二乗法むけの datafit 関数の練習です。測定データは人工的なもんです。テキトーな2次関数のパラメータを選んで真の値を振り出して、そこにテキトーなノイズを載せて「測定データ」としているみたいです。まあ、真の値が分かってデータを振り出しているので、後で答え合わせも(やろうと思えば)できるっと(デモではやってないみたいだけど。)

パラメータモデルFFは当然の2次関数(パラメータはa, b, c)、残差計算関数はGということになっとります。

なお、datafit関数は「制約付き重み付き非線形最小二乗法」に対応した関数であるみたいです。パラメータに上限、下限を設定するような制約付きフィッティングを行ったり、測定の信頼性に応じて測定値への重みづけも設定可能みたいですが、今回はそういうことはしてないみたいです。

シミュレーション結果

デモを実行すると一撃で以下のグラフが求まります。ParabolicModelPlot

実験データ(といって、アーティフィシャルなでっち上げ?データだけれども)に対して「それっぽい」2次曲線(赤色)が求まってます。

なお、赤色曲線(英文表記はFitting function)を「調整関数」と書いているのはScilabの _( ) による自動翻訳機能?(囲まれた英文に対応する他言語単語があれば自動で置き換える)の御利益です。「適合関数」などと訳す方が良いのでは、などと素人老人は思いますが、知らんけど。

ともあれ、テキトーな測定データと非線形のパラメータモデルがあれば、パラメータは推定可能だと(まあExcelでもよくやるケド。)

手習ひデジタル信号処理(203) Scilab、{Scilabデモ}、地面の上で跳ねるボール へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です