2012-09-07 44 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