fourier transform on conjugate time reversal
Mostra commenti meno recenti
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)));
Risposta accettata
Più risposte (1)
David Goodmanson
il 9 Lug 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
Categorie
Scopri di più su Fourier Analysis and Filtering in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!