Координаты Findpeaks не совпадают с координатами оси X (Matlab) - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть фрагмент кода, который работает не так, как предполагалось (по крайней мере, на мой взгляд), и я надеялся, что кто-то может помочь прояснить этот вопрос.

Код отображает гистограмму моих данных и применяетсяфункция ksdensity для сглаживания данных, наконец, она запускает функцию findpeaks, чтобы вернуть построенные максимальные значения. Однако координаты горизонтальной оси не соответствуют графическому представлению нанесенных данных.

MB(A); %array with the data to be plotted
figure;
histogram(MB(A),25)

[f,xi] = ksdensity(MB(A), 'Bandwidth',10);
figure;
plot(xi,f);
[peaks,loc] = findpeaks(f) 

результат этого фрагмента кода таков:

peaks = 0.02320,0017
loc = 27 76

однако при взгляде на графическое представление координаты пиков (для горизонтальной оси) сильно отличаются от этих значений

гистограмма сглаженные данные

Первоначально я думал, что это может быть проблемой чрезмерного или недостаточного подбора, но после того, как немного поигрался со значениями, проблема осталась. Я просто пропускаю какую-то базовую концепцию? Любая помощь будет принята с благодарностью. Большое спасибо

1 Ответ

0 голосов
/ 04 ноября 2019

Местоположение [loc] является индексом точки, поэтому вы получите графический x по:

xi(loc)

, см. Справку по matlab для получения информациипо возвращаемым переменным:

[PKS,LOCS]= findpeaks(Y) also returns the indices LOCS at which the
    peaks occur.
...