不規則に変化する無数のデータを一つの数式を経由させることで一定の値に近づける関数の求め方
10 views (last 30 days)
Show older comments
Takeru Katagiri
on 25 Jan 2020
Commented: Takeru Katagiri
on 7 Feb 2020
一変数に対して不規則に変化する無数のデータを一つの数式を経由させることで一定の値に収束させる関数の求め方について伺いたいです。
大変わかりにくい質問かと思いますが、お助けいただけたらと思います。
あるX-Yの位置グラフについてXが増加するにつれて(増加の幅は一定ではないが、必ず増加する状況です)Yの値がある値Rより上下して測定される状況です。
この時最小二次方などで近似式を導出することは難しくありませんが、実際にあるYに関する無数のエクセルデータにある関数をつかって、値Rに変える・近づける関数の導出が行いたいのですが、良いアイディアはありませんか。
MATLABの質問でなく、数学の質問になってるかもしれませんがよろしくおねがいします。
2 Comments
Takumi
on 30 Jan 2020
値Rは既知ですか?だとしたら無理やりRに収束する関数 (指数関数とかで表現)を掛けたりするとできますが…データを改ざんしていることになりそうです。 それともRは未知で、推定によってRに収束させたいということですか? 未知パラメータの推定なら例えばカルマンフィルタとかを使うと良さそうですね
Accepted Answer
Takumi
on 1 Feb 2020
Edited: Takumi
on 1 Feb 2020
無理矢理ある値に収束させたいなら近似式を導出するというよりはある値に収束する関数(例えば指数関数)を変形するのがいいのではないでしょうか。例えば指数関数を使ってこんな関数を考えることができます。
これはx=0でf=y(1)、x→∞で→Rとなる関数です。
例えばこんな感じです。
n=50; % データ数
x=rand(1,n);
x(1)=0;
x=cumsum(x); % 0から始まってランダムに増加するx
R=10; % 収束値
b=1; % データのばらつき幅
y=R +(2*b*rand(1,n)-b); % Rの前後に幅bでばらつくサンプルデータ
a=0.2; % 減衰率
f=exp(-a*x).*y-R*(exp(-a*x)-1);
plot(x,y,'or'); % 元データ
hold on
plot(x,R*ones(size(x)),'--'); % 収束線
plot(x,f,'*b'); % 修正値
この式に物理的意味は全くありません。
状況がわからないのでなんとも言えませんが、データがバラつくなら、ばらつきが正規分布するなど、モデル化して真値を推定するか、エラーバーなどでばらつきと一緒にデータを表示する方がいいと思います。
フィルタについては本などを調べてみてください。
More Answers (0)
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!