polyfitのnを求める関数はありますか?
3 views (last 30 days)
Show older comments
polyfitを使って近似曲線を描こうとしているのですが,最適なnの決定方法はありますか?
curvefitting ToolBoxは持っていないのでpolyfit関数で行おうと思っています.
https://jp.mathworks.com/help/matlab/ref/polyfit.html を参考にやってみているのですが,どの手法もプロットの結果を見て次元数を決めているように見えます.
1つのデータの処理であればこの手法でできているのですが,各ファイルごとにxとyのデータが入っており,ファイルごとに近似曲線を求めたいので1つ1つプロットの結果をみてnのパラメータを決めるのは現実的ではないと考ええたため,質問させていただきました.
よろしくお願いいたします.
3 Comments
Kenta
on 3 Mar 2020
こんにちは、私からもコメントという形で感じたことを述べさせてください。不勉強のため間違いがあれば申し訳ございません。
nを決めるアルゴリズム/手法を議論するまえに、Iwakamiさまがお持ちの、xとyの関係に関する仮説を考える必要があると思います。
例えば、モデル式/理論式にて、yはxの2乗スケールで増加するならnは2であるべきでしょうし、そもそもxとyという本来は一致すべき値を解析するのであればnは1などの小さめの値になるかと思います。
また、x=∞や0のときのことも参考になると思います。xが大きくなればyがある一定に収束するのであれば、単調増加(減少)する関数でフィッティングするのは最適ではないかもしれません。例えば、十分長い斜面を自転車で下っても空気抵抗などである値に収束するはずです。逆に、x=0付近ではある値になるべきであればその値で補正したのちにnの値を考えても良いと思います。
さらに、xが☆%増加したらyが△%増加するということが仮説にあるのなら、logスケールでのフィッティングをするのかもしれません。詳しくは、例えば(https://atarimae.biz/archives/13161)が参考になると思います。
以上、こちらも感想程度、ということで思っていただけると幸いです。よろしくお願いいたします。
Hiroyuki Hishida
on 4 Mar 2020
これまでにでているコメントにプラスしてですが、(もっともシンプルであろう)一次式で近似してはいけない理由がないので、(まずは)一次式で近似すると言い切るのも一つの手かもしれません。
Answers (1)
See Also
Categories
Find more on ソルバー出力と反復表示 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!