Filter löschen
Filter löschen

ガウスフィッティング​した後,フィッティン​グ曲線のピーク位置を​取得したいです.

18 Ansichten (letzte 30 Tage)
Keishi Chiba
Keishi Chiba am 31 Jan. 2020
Beantwortet: Keishi Chiba am 5 Feb. 2020
ガウスフィッティングした後,フィッティング曲線のピーク位置を取得したいです.
f = fit(x.',DATA1.','gauss2')
上記のようにガウスフィッティングをした後,フィッティング曲線のピーク位置を数値として取り出したいと考えています.
findpeaksを使ってピーク位置を検出しようとしましたが,fが1×1のデータなのでできませんでした.(行列を用意しないといけないみたい)
cfitを行列に変換する方法も調べましたが,できませんでした.
fが数式として扱われているようなので,fの計算結果を一度行列に出力できればいいのかなとも考えているのですが,やり方がわかりません.
初歩的な質問で申し訳ございませんが,どなたかご教授いただければと思います.回答よろしくおねがいします.

Akzeptierte Antwort

Takumi
Takumi am 1 Feb. 2020
Bearbeitet: Takumi am 1 Feb. 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); % 微分値

Weitere Antworten (1)

Keishi Chiba
Keishi Chiba am 5 Feb. 2020
ありがとうございます.参考にさせていただきます.

Kategorien

Mehr zu 記述統計 finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!