FFT on dim > 1 returning negative values?

15 visualizaciones (últimos 30 días)
Keith
Keith el 18 de Abr. de 2012
I have a matrix that's [NxT] and I want the fft over the second dimension. But if I do this:
X = rand(100,200);
F1 = fft(X,[],2);
F2 = fft(X')';
figure;
subplot(2,1,1);
plot(real(F2)-real(F1));
subplot(2,1,2);
plot(imag(F2)-imag(F1));
Then, you can see, imag(F1) = -imag(F2). That is, F1 = conj(F2)
Is this a bug or am I misunderstanding something?

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 18 de Abr. de 2012
This is caused because you are taking the complex conjugate transpose ('). If you take the regular transpose (.') you will see the behavior you are expecting:
X = rand(100,200);
F1 = fft(X,[],2);
F2 = fft(X.').'; %note the .'
figure;
subplot(2,1,1);
plot(real(F2)-real(F1));
subplot(2,1,2);
plot(imag(F2)-imag(F1));
And for more info:
doc ctranspose %complex conjugate transpose
doc transpose %regular one

Más respuestas (1)

Keith
Keith el 18 de Abr. de 2012
Whooooooooooooooooooooooooa. I did NOT know that! I've been using it for years. You seriously just blew my mind.
Now I get to go spend the next year going through all of my code.
Thanks so much for setting me straight!

Categorías

Más información sobre Fourier Analysis and Filtering en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by