我试图在Matlab中创建的功率谱密度图上找到最大峰值.我可以很好地创建情节但是很难正确地标记它.我使用find peak和max函数来找到它,但是Matlab无法正确标记它.它找到了正确的高度但是向左或向右标记了一点.这是代码:
data = load ('EEGData(test1).txt', '-ascii');
figure(1)
plot(data)
Y =fft(data,251);
Pyy = Y.*conj(Y)/251;
f = 1000/251*(0:127);
figure(2)
plot(f,Pyy(1:128))
title('Power spectral density')
xlabel('Frequency (Hz)')
[a,b] = findpeaks(Pyy(1:128));
MAX = max(a);
hold on
plot(f(b), MAX,'or')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
当我通过替换数据来测试您的代码时
data=randn(251,1);
Run Code Online (Sandbox Code Playgroud)
...我发现红色o标记指示的局部峰位置在正确的位置.只是所有峰都标记在最大峰的高度.
我不是100%确定你要做什么,但看起来好像你正试图找到最大峰值.如果是这种情况,那么您不需要findpeaks功能.只需用以下代码替换代码的最后几行......
[MAX, MAXidx] = max(Pyy(1:128));
hold on
plot(f(MAXidx), MAX,'or')
Run Code Online (Sandbox Code Playgroud)