2012-04-26 114 views
2

我試圖在Matlab中創建的功率譜密度圖上找到最大峯值。我可以創建情節很好,但難以正確標記它。我使用查找峯值和最大值函數來查找它,但是Matlab無法正確標記它。它找到了正確的高度,但稍稍向左或向右標記。這裏是代碼:使用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') 

任何幫助將不勝感激。

回答

5

當我測試你的代碼是用

data=randn(251,1); 

替換數據...我發現,由紅O標記指示的局部峯值的位置是在正確的位置。只是所有的高峯都標記在最高峯的高度。

我不是100%確定你想要做什麼,但它看起來好像你試圖找到最大的高峯。如果是這種情況,那麼你不需要findpeaks函數。只需用以下代碼替換代碼的最後幾行...

[MAX, MAXidx] = max(Pyy(1:128)); 
hold on 
plot(f(MAXidx), MAX,'or') 
+0

這正是我想要做的。非常感謝! – user1359861 2012-04-28 23:47:06

+1

太棒了,那麼請點擊接受按鈕。 – learnvst 2012-04-29 00:09:19