获取原始矩阵

时间:2017-12-26 18:17:09

标签: matlab matrix fft

我有以下矩阵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%的错误就可以了。

1 个答案:

答案 0 :(得分:0)

重建原始矩阵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)));