Jay*_*hna 1 signal-processing numpy spectrogram python-3.x
我计算了 uint8 I/Q 数据的 STFT,并将其存储在一个 numpy 矩阵中,其中每一行存储一个窗口的 STFT,如下面的 sudo 代码所示。
#k= length of window
#fs= Sampling frequency
#n= Number of STFT calculated
#matrix= Initially empty numpy array
for i in range(0,n):
t=data[start:end,:] #start & end calculated with each iteration
t=t.flatten()
t=t-127.5
array = np.empty(t.shape[0]//2, dtype=np.complex128)
array.real = t[::2]
array.imag = t[1::2]
transform=(np.fft.fft(temp_array))
line = 2*abs(transform)/k
#Inserting row into numpy array
if(i==0):
matrix = np.hstack((matrix, line))
else:
matrix = np.vstack((matrix, line))
Run Code Online (Sandbox Code Playgroud)
现在如何绘制频率与时间的频谱图?
小智 7
你能做的就是使用这个
第一种方法:
import scipy.io.wavfile as wav
import scipy.signal as signal
from matplotlib import pyplot as plt
sample_rate, samples = wav.read(filename)
f, t, Zxx = signal.stft(samples, fs=sample_rate)
plt.pcolormesh(t, f, np.abs(Zxx), cmap=cmap)
Run Code Online (Sandbox Code Playgroud)
或第二种方法:
plt.specgram(samples, cmap=cmap, Fs=sample_rate)
Run Code Online (Sandbox Code Playgroud)
我发现第二个可视化效果更好。但不知道如何使第一个看起来和第二个一样好。
| 归档时间: |
|
| 查看次数: |
23215 次 |
| 最近记录: |