I have a bandpass signal, I do IQ demodulation meaning:

first step:

$IQ(t) = x(t)*exp(-2\pi f_ct)$

second step:

low pass using $filtfilt$ function in MATLAB. (in order to avoid phase distortion)

Here, $F_c=5 MHz$ and $F_S=40 MHz$

For low-pass filter I use this:

[b,a] = butter(5,2*Fc/Fs) ; 
IQ(t) = filtfilt(b,a,IQ(t))*2; 

Frequency response of x(t), I and Q separately, and IQ

The plot shows frequency response of $x(t)$, $real(IQ(t))$ a.k.a $I$, $imag(IQ(t))$ a.k.a $Q$ and $IQ(t)$, respectively.

When I reconstruct this signal again to the original bandpass signal:

$x'(t) = IQ(t)*exp(+2\pi f_ct)$

The magnitude, phase response and power spectrum of the original and reconstructed signal is a follows:

magnitude, phase response

note: To plot phase response I use matlab's $unwrap$ function.

The frequency spectrum of original and reconstructed signal:

frequency spectrum

The phase response of the $x'(t)$ seems distorted at $2f_c = 10MHz$ .

Question1: Is this normal?

Question2: Does this happen because low-pass filter is not reversible?

Question3: Can I recover that phase response?

  • 1
    $\begingroup$ You could try using a linear phase FIR filter for the lowpass filtering. Comparing the original with the reconstructed bandpass signal should only have a linear phase difference between the two. Note - if you're examining the phase where the magnitude is near zero - then the phase calculation isn't very meaningful. $\endgroup$ – David Jan 28 at 12:38

I’ll hazard a guess on this that David’s comment is spot on. You could help by providing some specifications for the low pass filter attenuation at the frequencies at which you are observing the phase distortion, or perhaps provide plots of your magnitude/phase responses for the input and output. If this is what you’re observing then:

1). Yes. For a DFT or FFT of a signal, there is likely to be phase distortion at low relative amplitudes based on different implementation details. This has to do with the precision/resolution of the data on your machine.

2). Sort of. The filter could technically be reversible in the analytical sense (ie on paper) but quantization error from the limited precision of the data will make this impossible with many many applications.

3). Recover? No, not really. Assuming that you don’t have any errors in your implementation, and it sounds like you don’t, then that is simply the nature of the beast. However, you are using filtfilt, which I understand works by applying the filter forwards and backwards, resulting in a net zero phase response. As such, it would follow that your phase response should be unchanged, which I assume was your original hypothesis. You could just use the phase response from the original signal, if you have it. This may or may not be practical for your application, and could be done more efficiently if it were an option.

| improve this answer | |
  • $\begingroup$ Hi Dan, Thanks a lot for your response. I added some details and plots to be clearer. $\endgroup$ – Farnaz Jan 29 at 9:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.