这篇文章本意就是做出这样的一个过程:
一个被50Hz噪声所干扰的10Hz信号,在时域很难被去躁并分离出来,但如果我们用DFT将其转换为频域的信号,就可以很容易的使用滤波器完成分离了。
那么上述过程中的四张图片,true signal,noise signal,input signal和频域内的input signal,我们如何通过python作出呢?下面给出代码及生成的信号图:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def generate_sinusoid(N, A, f0, fs, phi):
'''
N(int) : number of samples
A(float) : amplitude
f0(float): frequency in Hz
fs(float): sample rate
phi(float): initial phase
return
x (numpy array): sinusoid signal which lenght is M
'''
T = 1/fs
n = np.arange(N) # [0,1,..., N-1]
x = A * np.sin( 2*f0*np.pi*n*T + phi )
return x
def generate_sinusoid_2(t, A, f0, fs, phi):
'''
t (float) : time length of the generated sequence
A (float) : amplitude
f0 (float) : frequency
fs (float) : sample rate
phi(float) : initial phase