获取原始矩阵
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_norm
和p_norm
,但不知道这两个矩阵是如何从原始矩阵中得到的,那么我们如何才能得到原始矩阵A
?
5-10% 的误差是可以的。
重建原始矩阵 A
的问题来自于您正在对 amp
矩阵进行归一化。除非您将 max(max(amp))
值保存在某处,否则该信号信息将永远丢失。
给定 p
和 amp
,您的原始矩阵 A
可以重构如下:
B_orig = amp .* exp(p .* 1i);
A_orig = round(real(ifft2(B_orig)));
给定 p_norm
和 amp_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)));
我有以下矩阵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_norm
和p_norm
,但不知道这两个矩阵是如何从原始矩阵中得到的,那么我们如何才能得到原始矩阵A
?
5-10% 的误差是可以的。
重建原始矩阵 A
的问题来自于您正在对 amp
矩阵进行归一化。除非您将 max(max(amp))
值保存在某处,否则该信号信息将永远丢失。
给定 p
和 amp
,您的原始矩阵 A
可以重构如下:
B_orig = amp .* exp(p .* 1i);
A_orig = round(real(ifft2(B_orig)));
给定 p_norm
和 amp_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)));