- #1
mdornfe1
- 3
- 0
I'm trying to write a python script that takes a noisy multi frequency signal, transforms it to frequency space, windows it there with a gaussian, then transforms it back to time space. Here is what I wrote:
The problem I'm running into is the windowed signal y has non negligible imaginary parts. They're about the same order as the real parts. Does anyone know why I might be getting this?
Code:
Fs=1000 #sampling frequency
fo=120 #center of gaussian
sigma=0.01 #inverse width of gaussian
T=1./Fs
L=2**10 #number of samples
t=arange(0,L)*T #time vector
f=Fs*linspace(0,1,L) #frequency vector
x=0.7*sin(2*pi*50*t) + sin(2*pi*120*t)+randn(t.size)/sqrt(t.size) #signal
x_fft=fft(x)
W=exp(-square(2*pi*sigma*(f-fo))) #gaussian window
y=ifft(W*x_fft) #windowed signal
The problem I'm running into is the windowed signal y has non negligible imaginary parts. They're about the same order as the real parts. Does anyone know why I might be getting this?