制御システム開発に関わっていると、しばしば実機やシミュレーションで取得したデータを分析することがあります。
その際にエクセルを使って近似式を求めたりすることが多いのではないでしょうか。
近似式を求めるのにエクセルを使用しても良いのですが、MATLABを使用することでとても楽に近似式を算出することができます。
ここではMATLABを使用した近似式の算出方法と、更に求めた近似式への値の代入方法を解説します。
近似式の求め方
MATLABには、ずばり近似式を算出する関数のpolyfit関数が用意されています。このpolyfit関数を使用して近似式を算出します。
例として以下の温度とトルクがプロットされたデータを考えます。

2次の近似式が\(0.0056*x^2-0.0383*x+6.3439\)となるようです。これとMATLABで算出した近似式が一致することを確認してみます。
まずは配列を2つ作成し、それぞれに温度とトルクの値を格納します。
エクセルファイルやCSVにデータがまとめられている場合、1つ2つのデータであれば変数エディタにコピペすると楽です。
まずワークスペースを右クリックして新規作成を選択します。

適当な名前を入力します。

名前をダブルクリックして変数エディタを開き、エクセルからデータをコピペします。


配列に値を格納したら、以下のスクリプトを実行します。
polyfit(temp, torque, 2)
第1引数にはX軸に相当するデータ(水温)、第2引数にはY軸に相当する配列(トルク)、第3引数には何次の近似式にするかを指定します。今回であれば2次の近似式を求めたいので2としています。
これを実行した結果は以下の通りです。

戻り値ですが、近似式を\(a*x^2+b*x+c\)とした場合の\(a,b,c\)となります。
値を確認するとエクセルで求めた係数と一致していることが分かります。
わざわざ散布図を出して近似式を表示せずとも簡単に近似式を出すことができました。
近似式に値を代入する
近似式に値を代入することも簡単です。この場合にはpolyval関数を使用します。
例えば上で求めた近似式に対して10、20、30、40、50という値を入れたときの計算結果を求めてみます。
まずはpolyfit関数の戻り値を以下のように配列で受け取ります。
p = polyfit(temp, torque, 2);
次にpolyfit関数を以下のように使用します。
polyval(p, [10 20 30 40 50])
第1引数にはpolyfitの戻り値、第2引数には代入したい値を指定します。上記のように、代入したい値は配列にしてまとめて指定することも可能です。
このスクリプトの結果は以下の通りです。

近似式へ値を代入した結果が簡単に求まりました。
近似式の算出方法まとめ
エクセルで行おうとするとデータが多ければ多いほど大変で、MATLABで求める方法を知らないがために数日がかりで作業しているようなケースも実際にありました。
ここで紹介した方法を使えば近似式の算出、近似式への代入が劇的に楽になります。是非使ってみてください。
コメント