【发布时间】:2016-04-29 03:47:36
【问题描述】:
我正在尝试了解 MATLAB FFT 标准化的工作原理。
让我们讨论以下示例。
%%
sum2D = @(a) sum(reshape(a,1,[])); % sum elements in 2D matrix
a = [0 0 0; 1 2 1; 1 1 1; 1 1 1; 0 0 0]
f1 = fft2(a)
m = [0 32 0; 0 0 0; 0 1 0; 0 2 0; 0 0 0]
fs = m.*fftshift(f1);
fs = fs./sqrt(numel(fs));
fm = ifft2(fs);
fm = fm.*sqrt(numel(fm))
% imshow(abs(fs))
norm(a(:))^2,norm(fs(:))^2,norm(fm(:))^2
sum2D(abs(a).^2)
sum2D(abs(fs).^2)
sum2D(abs(fm).^2)
sum2D(abs(fp).^2)
如果 m = 1,则归一化有效,并且初始信号 fft 和反 fft 中的能量相同。但是,如果我将 fft 乘以某个向量 m 后的信号,那么我不知道如何再次对其进行归一化。
如果与m相乘后能量会发生变化,还是我做错了什么。
【问题讨论】:
标签: matlab fft normalization ifft