获取原始矩阵

Get Original Matrix

我有以下矩阵A

 1   2   3   4 
 5   6   7   8
 9  10  11  12 
13  14  15  16 

现在我对上述矩阵执行了以下操作:

B = fft2(A);
amp = abs(B);
amp_norm = amp/max(max(amp));
p = angle(B);
p_norm = p/pi;

现在,如果我有矩阵amp_normp_norm,但不知道这两个矩阵是如何从原始矩阵中得到的,那么我们如何才能得到原始矩阵A?
5-10% 的误差是可以的。

重建原始矩阵 A 的问题来自于您正在对 amp 矩阵进行归一化。除非您将 max(max(amp)) 值保存在某处,否则该信号信息将永远丢失。

给定 pamp,您的原始矩阵 A 可以重构如下:

B_orig = amp .* exp(p .* 1i);
A_orig = round(real(ifft2(B_orig)));

给定 p_normamp_norm,相反,您可以重建原始 p 而不是 amp... 除非上述归一化因子存储在某处:

k = 136; % the original max(max(amp)) value
p_orig = p_norm .* pi;
amp_orig = amp_norm .* k;
B_orig = amp_orig .* exp(p_orig .* 1i);
A_orig = round(real(ifft2(B_orig)));