fourier transform on conjugate time reversal
8 views (last 30 days)
Show older comments
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)));
0 Comments
Accepted Answer
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.
0 Comments
More Answers (1)
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
0 Comments
See Also
Categories
Find more on Get Started with Signal Processing Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!