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

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

채택된 답변

Takumi
Takumi 2020년 2월 1일
편집: Takumi 2020년 2월 1일
近似関数の値を評価したい場合は、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); % 微分値

추가 답변 (1개)

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

카테고리

Help CenterFile Exchange에서 記述統計에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!