2012-09-07 81 views
1

我的第一個計算器的問題,希望我做正確的..微調matplotlib功率譜圖表

我試圖建立一個功率譜密度圖(matplotlib.pyplot.psd),我需要放棄256段在繪圖前光譜的兩端。對於我的任務,我需要實際刪除數據點,而不是簡單地限制x軸範圍。

psd函數返回兩個數組的元組,我想我可以簡單地移除數組的元素,然後調用show()。但它似乎並不奏效。

from matplotlib.pyplot import * 
import numpy as np 

#put some dummy data into s 
s=np.vectorize(complex)(range(2048),range(2048)) 

x=psd(s, 2048, 194171, window=np.bartlett(2048),Fc=14050000) 

#trim x 
del x[0][-256:] 
del x[0][:256] 
del x[1][-256:] 
del x[1][:256] 

show() 

這給:

Traceback (most recent call last): 
    File "dummy-fft.py", line 10, in <module> 
    del x[0][-256:] 
ValueError: cannot delete array elements 

有沒有更好的方式來截斷PSD情節?

回答

1

,而不是刪除的頭部和尾部,你可以用切片得到你想要的部分:以對數刻度工作

from matplotlib.pyplot import * 
import numpy as np 

#put some dummy data into s 
s=np.vectorize(complex)(range(2048),range(2048)) 

power, freq=psd(s, 2048, 194171, window=np.bartlett(2048),Fc=14050000) 
figure() 
semilogy(freq[256:-256], power[256:-256]) 
show() 
+0

謝謝。如果嘗試以dB爲單位繪製(如psd函數),它會報告負值plot(freq [256:-256],10 * np.log10(power [256:-256])):ValueError:數據沒有正值,因此不能進行日誌縮放。我尋找psd劇情功能的源代碼,但在樹中丟失:(。 – k3it