- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 matplotlib 绘制信号和信号的频谱图,但是...我仅获得信号的第一个值(样本)的频谱图(例如 30000 中的 60...)。
这是一个很长的文件,这就是为什么我只想绘制前 30000 个样本。
代码如下:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
Data=pd.read_csv('MySignal.txt',
skiprows=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],
header=0)
print(Data.head())
DataI=Data['Sig'].tolist()
print(len(Data.index))
DataI=DataI[0:30000]
NFFT = 200 # the length of the windowing segments
Fs = 500 # the sampling rate
# plot signal and spectrogram
t=range(len(DataI))
ax1 = plt.subplot(211)
plt.plot(t, DataI)
plt.subplot(212, sharex=ax1)
Pxx, freqs, bins, im = plt.specgram(DataI, NFFT=NFFT,
Fs=Fs,noverlap=100, cmap=plt.cm.gist_heat)
plt.show()
我不太了解plt.specgram是如何工作的,所以我不明白问题出在哪里......
非常感谢!
最佳答案
这里是一个快速而肮脏的合成示例,三个音调每个相隔一个 Octave ,效果很好。请阅读采样定理以了解频谱图的概念。实际上最好先学习如何通过使用 FFT 来绘制频谱(频谱图的垂直切片)。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
time1 = np.arange(0,5,0.0001)
time = np.arange(0,15,0.0001)
data1=np.sin(2*np.pi*300*time1)
data2=np.sin(2*np.pi*600*time1)
data3=np.sin(2*np.pi*900*time1)
data=np.append(data1,data2 )
data=np.append(data,data3)
print len(time)
print len(data)
NFFT = 200 # the length of the windowing segments
Fs = 500 # the sampling rate
# plot signal and spectrogram
ax1 = plt.subplot(211)
plt.plot(time,data) # for this one has to either undersample or zoom in
plt.xlim([0,15])
plt.subplot(212 ) # don't share the axis
Pxx, freqs, bins, im = plt.specgram(data, NFFT=NFFT, Fs=Fs,noverlap=100, cmap=plt.cm.gist_heat)
plt.show()
顶部的 x 轴以秒为单位。为了清楚起见,我在 5 秒内放大了 300 Hz 到 600 Hz 的过渡。底轴不是秒出来的,这也是我把轴的分享拿出来的原因。这可以修复(细节)。
关于python - 用 matplotlib specgram 绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35932145/
我正在使用 matplotlib.pyplot.specgram 和 matplotlib.pyplot.pcolormesh 绘制地震信号的频谱图。 背景信息 - 使用 pcolormesh 的原因
我正在尝试使用 matplotlib 绘制信号和信号的频谱图,但是...我仅获得信号的第一个值(样本)的频谱图(例如 30000 中的 60...)。 这是一个很长的文件,这就是为什么我只想绘制前 3
我有一个采样率为 16e3 的信号,其频率范围为 125 到 1000 Hz。因此,如果我绘制一个频谱图,我会得到一个非常小的颜色范围,因为所有未使用的频率。 我尝试通过设置 ax 限制来修复它,但这
在 Matlabs 的最新版本中,specgram 函数被 spectrogram 取代,文档说明: Note. To obtain the same results for the removed
我在 matlab 中有代码: data = 1:999; Fs = 8000; tWindow = 64e-3; NWindow = Fs*tWindow; window = hamming(NWi
我可以绘制频谱图(在 Jupyter 笔记本中): fs = 48000 noverlap = (fftFrameSamps*3) // 4 spectrum2d, freqs, timePoints
我想知道此功能是否已通过 specgram 内置,但我认为并非如此。如果没有,那么最好的方法是使用 specgram 或通过 matplotlib 来实现。如果对谱图轴进行某种变换可以启用此功能。 例
在 Pylab 中,specgram() 函数为给定的振幅列表创建一个频谱图,并自动为该频谱图创建一个窗口。 我想生成频谱图(瞬时功率由 Pxx 给出),通过在其上运行边缘检测器对其进行修改,然后绘制
我对音频处理非常陌生。所以请原谅我的无知。 根据维基百科,通常x轴代表时间,y轴代表频率,反之亦然。颜色强度代表特定时间和频率的振幅(能量)。这很容易理解。 我无法解释 pylab API 中 spe
我以前从未处理过音频信号,对信号处理知之甚少。尽管如此,我需要使用 pyplot.specgram 来表示和音频信号函数来自 matplotlib 图书馆。这是我如何做到的。 import matpl
以下代码使用 scipy.signal.spectrogram 生成频谱图或 matplotlib.pyplot.specgram . specgram的颜色对比不过功能比较低。 有没有办法增加它?
我正在努力将我的代码从 python 转换为 objective c。在 matplotlib.mlab.specgram 函数中,我在 fft 之前看到了 3 个重要函数: result = st
我是一名优秀的程序员,十分优秀!