MATLAB Answers

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

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

  0 Comments

Sign in to comment.

Accepted Answer

Takumi
Takumi on 1 Feb 2020
Edited: Takumi on 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); % 微分値

  0 Comments

Sign in to comment.

More Answers (1)

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

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!