ガウスフィッティングした後,フィッティング曲線のピーク位置を取得したいです.
36 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Keishi Chiba
le 31 Jan 2020
Réponse apportée : Keishi Chiba
le 5 Fév 2020
ガウスフィッティングした後,フィッティング曲線のピーク位置を取得したいです.
f = fit(x.',DATA1.','gauss2')
上記のようにガウスフィッティングをした後,フィッティング曲線のピーク位置を数値として取り出したいと考えています.
findpeaksを使ってピーク位置を検出しようとしましたが,fが1×1のデータなのでできませんでした.(行列を用意しないといけないみたい)
cfitを行列に変換する方法も調べましたが,できませんでした.
fが数式として扱われているようなので,fの計算結果を一度行列に出力できればいいのかなとも考えているのですが,やり方がわかりません.
初歩的な質問で申し訳ございませんが,どなたかご教授いただければと思います.回答よろしくおねがいします.
0 commentaires
Réponse acceptée
Takumi
le 1 Fév 2020
Modifié(e) : Takumi
le 1 Fév 2020
近似関数の値を評価したい場合は、f(10)のようにするとx=10の点での値を評価できます。
以下に関数値を評価してピーク値を算出する例を示しますが,コード後半にあるように,微分値が0になる位置を補間によって求める方が少ない評価点で正確にピーク位置が求まりそうです.
[x,y] = titanium; % サンプルデータ
f = fit(x.',y.','gauss2'); % ガウス分布近似関数
xi = linspace(x(1),x(end),200)'; % 関数評価点
yi = f(xi); % 関数評価
plot(x,y,'ob'); % サンプルデータ
hold on
findpeaks(yi,xi); % ピーク位置表示
xx = xi(107:148); % 微分値評価区間
fx = differentiate(f, xx); % 微分値
xp = interp1(fx,xx,0); % ピーク位置 (微分値が0になる点を補間により求める)
plot(xp,f(xp),'.g'); % ピーク位置 (微分から)
figure
plot(xx,fx); % 微分値
0 commentaires
Plus de réponses (1)
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!