Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Phase shift using FFT

  1. Oct 3, 2007 #1
    What I want to do is apply a frequency-independent phase shift to a Gaussian Noise signal. Obviously I can just invert it to get a pi shift. Also I can take the Hilbert transform to get a pi/2 shift and I can invert that to give myself in effect a 3/2pi shift. BUT..... what I want to do is to be able to apply any phase shift, 10, 20, 30 degrees etc.

    The way I have been thinking about this is that I can take the FFT of the noise and get the magnitude and phase information, and then I could manipulate the phase but leave the magnitude the same and take the IFFT to get my phase-shifted signal. Here is an example bit of matlab code doing this on a single sinusoid. As it is here the code doesn't work. But if you change the phase shift p from pi/2 to pi then it does? Is there something I'm missing. Perhaps I need to apply the phase shift differently to the positive and negative parts of the FFT? Or is it something to do with the fact that theta is distributed on [-pi pi] and when I add "p" I change this and make it ambiguous or something?

    %generate signal
    %Define a phase shift in rads
    %Get the FFT of the signal
    %Get the magnitude
    %Get the phase
    %Add the phase shift onto the phase
    %Set the new real and imag parts of the spectrum
    %Make the new spectrum
    %Get the new signal
    %plot the signals
    figure;plot(t,sig);hold on; plot(t,newsig,'g');
  2. jcsd
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted

Similar Discussions: Phase shift using FFT
  1. FFT library (Replies: 2)

  2. FFT code help please (Replies: 16)

  3. [C#] FFT in read world (Replies: 33)