I tried to prove the separability of a signal property of 2D Fourier transform using a 2D matrix that's separable to 2 1D vectors. Where:
f(x,y) = f(x)*f(y)
Then F(u,v) = F(u)*F(v)
Using the following code:
% Separabilty of signal
H = [-1,2,-1;-2,4,-2;-1,2,-1];
b3 = fft2(H)
Hx = [-1,2,-1];
Hy = [1,2,1]';
c2 = fft(Hy)*fft(Hx')'
if norm(vecnorm(b3-c2)) < 1e-5
"same"
else
"different"
end
But, though the numbers are correct, their ordering inside the matrix is shifted. I don't understand what's wrong.
The error is here
c2 = fft(Hy)*fft(Hx')'
Why do you apply the double transposition fft(Hx')'
?
Since
H = Hy*Hx
then
c2 = fft(Hy)*fft(Hx)
Note that in matlab the operation '
performs the complex conjugate transpose, that is the reason why fft(Hx)
is not equal to fft(Hx')'
, since the second transposition changes the sign of the imaginary part.