fourier transform on conjugate time reversal

8 views (last 30 days)
My first question is if the following transform pair shown by equation 3 is valid:
(1) if F{x(t)} = F(f)
(2) then F{conj(x(t)} = conj(F(-f))
(3) then F{conj(x(-t)} = conj(F(f))
Next, I made a matlab script to test the relation of equation (3). I created a signal x(t) took the conj(fft(x)) (right side of (3)). Then I took the fft(conj(fliplr(x))) (left side of equation 3). I got different answers. The latter has a phase slope difference when compared to the former. Looks like a delay shift in time. Here is part of the MATLAB:
num_samples = 1024;
samplingInterval_sec = 4.0e-09;
gamma = 2.0e+12;
time = ((0:(num_samples-1)) - ((num_samples-1)/2)) * samplingInterval_sec;
phi = 0.5 * gamma * time.^2;
x = exp(1i*2*pi*phi);
spectrum_1 = conj(fft(x));
spectrum_2 = fft(conj(fliplr(x)));

Accepted Answer

Matt J
Matt J on 9 Jul 2017
Edited: Matt J on 9 Jul 2017
My first question is if the following transform pair shown by equation 3 is valid:
It is valid for continuous Fourier transforms. For discrete FTs, it holds for time-reversal that is modulo N. In modulo N time-reversal, x(1) becomes x(1), x(2) becomes x(N), x(3) becomes x(N-1) and so on. This is not equivalent to a fliplr operation, as you have assumed.

More Answers (1)

David Goodmanson
David Goodmanson on 9 Jul 2017
Hello John,
To use the reflection properties it's good to have t=0 and f=0 at the center of their respective arrays. However, the fft assumes t=0 at the first point of the input array, same for f=0 in the output array. So you have to shift down, do the transform, shift back up. fft(x) is replaced by fftshift(fft(ifftshift(x))). If you do that replacement in your code things work pretty well, but you don't get exactly the same thing. There are some annoying details having to do with an even number of points in the array.
For reflection situations it's just easier to use an odd number of points. The following code works for any complex function x(t). It's a better test if x(t) is neither symmetric or antisymmetric, and x(t) does not have to be small at the ends of the array although you get nicer looking plots if it is.
n = 1000;
N = 2*n+1; % N point fft
fs = 10; % sampling frequency
delt = 1/fs; t = (-n:n)*delt;
delf = fs/N; f = (-n:n)*delf;
fun = @(t) (2+3i)*exp((4+5i)*t-t.^2); % any complex function
x = fun(t);
conjxrefl = conj(fun(-t));
s1 = conj(fftshift(fft(ifftshift(x))));
s2 = fftshift(fft(ifftshift(conjxrefl)));
plot(f,real(s1),f,real(s2),'o',f,imag(s1),f,imag(s2),'o') % zoom in

Categories

Find more on Get Started with Signal Processing Toolbox in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!