y=a1(:,1);
chan1= y-mean(a1);
fs=128;
d=1/fs;
t=[0:length(chan1)-1]*d;
fs=fft(chan1,128);
pp=fs.*conj(fs)/128;
ff=(2:9)/128/d;
figure(4);
plot(ff,pp(2:9));
title('Power Spectrum');
xlabel('Frequency(Hz)');
ylabel('Power Spectrum Density(µv)');
grid on;
Peak.jpg
How to find peak value on y-axis without using Data Cursor tools. Thanks in advance.

 採用された回答

Star Strider
Star Strider 2020 年 1 月 15 日

0 投票

If you have R2017b or later, you can use the islocalmax function.
If you have the Signal Processing Toolbox, you can use the findpeaks function.

4 件のコメント

Reff
Reff 2020 年 1 月 15 日
I tried to use findpeaks on y-axis by findpeaks(pp(2:9)), unfortunately the graph shift -1 at x-axis and -1000 on y-axis. Am I missing something?
Star Strider
Star Strider 2020 年 1 月 15 日
If you are using:
[pks,locs] = findpeaks(pp(2:9))
you will need to add 1 to the ‘locs’ that findpeaks returns to get the actual indices.
Example —
x = 1:9;
pp = [50 100 1800 300 2500 1500 3000 3500 5800];
[pks,locs] = findpeaks(pp(2:9));
figure
plot(x, pp)
hold on
plot((locs+1), pks, 'r*')
hold off
Note that my code uses ‘(locs+1)’ in the plot call to refer to them correctly.
Reff
Reff 2020 年 1 月 16 日
Hi Strider,
It works well. Really aprreciate it. Thanks.
Star Strider
Star Strider 2020 年 1 月 16 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

質問済み:

2020 年 1 月 15 日

コメント済み:

2020 年 1 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by