matlab fft 相位,从相位和幅度获取傅立叶变换 – Matlab

傅立叶变换F的幅度和相位定义为:

Mag = sqrt(Real(F)^2 + Imaginary(F)^2)

Phase = arctan(Imaginary(F)/Real(F))

我试图编写一个采用灰度图像矩阵的matlab代码,在矩阵上执行fft2(),然后计算变换的幅度和相位。然后我想计算傅里叶变换的虚部和实部。这是通过将前两个方程重新排列成:

Real = Mag/sqrt(1 + tan(Phase)^2)

Imaginary = Real*tan(Phase)

最后结合和逆fft2:

F = Real + i*Imaginary

image = ifft2(F)

我期望看到与输入相同的图像,但我得到垃圾。我的数学错了吗我的matlab mfile代码如下:

function y = forwardBackwardFFT(image)

F = fft2(image);

mag = sqrt(real(F).^2 + imag(F).^2);

phase = atan(imag(F)./real(F));

re = sqrt((mag.^2)./(1 + tan(phase).^2));

im = re.*tan(phase);

F = re + i*im;

f = ifft2(F);

subplot(1,2,1);

imshow(image);

Title('Original Image');

subplot(1,2,2);

imshow(f);

Title('Image after forward and backward FFT');

y = f;

非常感谢 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值