不規則に変化する無数のデータを一つの数式を経由させることで一定の値に近づける関数の求め方
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Takeru Katagiri
le 25 Jan 2020
Commenté : Takeru Katagiri
le 7 Fév 2020
一変数に対して不規則に変化する無数のデータを一つの数式を経由させることで一定の値に収束させる関数の求め方について伺いたいです。
大変わかりにくい質問かと思いますが、お助けいただけたらと思います。
あるX-Yの位置グラフについてXが増加するにつれて(増加の幅は一定ではないが、必ず増加する状況です)Yの値がある値Rより上下して測定される状況です。
この時最小二次方などで近似式を導出することは難しくありませんが、実際にあるYに関する無数のエクセルデータにある関数をつかって、値Rに変える・近づける関数の導出が行いたいのですが、良いアイディアはありませんか。
MATLABの質問でなく、数学の質問になってるかもしれませんがよろしくおねがいします。
2 commentaires
Takumi
le 30 Jan 2020
値Rは既知ですか?だとしたら無理やりRに収束する関数 (指数関数とかで表現)を掛けたりするとできますが…データを改ざんしていることになりそうです。 それともRは未知で、推定によってRに収束させたいということですか? 未知パラメータの推定なら例えばカルマンフィルタとかを使うと良さそうですね
Réponse acceptée
Takumi
le 1 Fév 2020
Modifié(e) : Takumi
le 1 Fév 2020
無理矢理ある値に収束させたいなら近似式を導出するというよりはある値に収束する関数(例えば指数関数)を変形するのがいいのではないでしょうか。例えば指数関数を使ってこんな関数を考えることができます。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269415/image.png)
これは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'); % 修正値
この式に物理的意味は全くありません。
状況がわからないのでなんとも言えませんが、データがバラつくなら、ばらつきが正規分布するなど、モデル化して真値を推定するか、エラーバーなどでばらつきと一緒にデータを表示する方がいいと思います。
フィルタについては本などを調べてみてください。
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur デジタル フィルター解析 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!