欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

GS 算法进行一维和二维信号的相位恢复

程序员文章站 2022-03-07 20:18:43
GS 算法进行一维和二维信号的相位恢复简介功能快捷键一维信号二维信号生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入简介Gerchberg-Saxton 算法可通过测量两个变换关系已知的信号的强度恢复出其相位,设原信号为uuu, 其傅里叶变换为U=FT[u]U=FT[u]U=FT[u],测得其强度为I=∣u∣2I=|u|^2...

GS 算法进行一维和二维信号的相位恢复

简介

Gerchberg-Saxton 算法可通过测量两个变换关系已知的信号的强度恢复出其相位,设原信号为uu, 其傅里叶变换为U=FT[u]U=FT[u],测得其强度为I=u2I=|u|^2,功率谱为P=U2P=|U|^2,据此恢复出u=uejϕu=|u|e^{j\phi}的相位,步骤如下

  1. 初始相位设为0,u=Iu'=\sqrt{I}
  2. 计算FT[u]FT[u']的相位θ\theta',令U=UejθU'=|U|e^{j\theta'}
  3. 计算FT1[U]FT^{-1}[U']的相位ϕ\phi',令u=uejϕu'=|u|e^{j\phi'}
  4. 回到步骤2,直至达到最大步数

一维信号

设高斯波包u(x)=ex2/2R2ej2πx/λu(x)=e^{-x^2/2R^2}e^{j2\pi x/\lambda},其中x[4,4],R=1,λ=3x\in[-4,4],R=1,\lambda=3,图像如下:

GS 算法进行一维和二维信号的相位恢复

复原时,初始相位设为0,故实部为高斯函数而虚部为0:
GS 算法进行一维和二维信号的相位恢复使用GS算法进行相位恢复后:
GS 算法进行一维和二维信号的相位恢复迭代过程中误差ϵ=mean(uu)\epsilon=mean(|u'-u|)如下:
GS 算法进行一维和二维信号的相位恢复

二维信号

u(x,y)=peaks(x,y)ej2πr/k,r=x2+y2u(x,y)=peaks(x,y)e^{j2\pi r/k},r=\sqrt{x^2+y^2},其中peaks 为MATLAB 中的函数,x,y[4,4]x,y\in[-4,4]R=1,λ=4R=1,\lambda=4, 图像如下:
GS 算法进行一维和二维信号的相位恢复初始相位设为0:
GS 算法进行一维和二维信号的相位恢复使用GS算法进行相位恢复后:
GS 算法进行一维和二维信号的相位恢复

MATLAB代码

R=1;
lambda=4;
x=-4:.1:4;
N=length(x);
[X,Y]=meshgrid(x,x);
r=sqrt(X.^2+Y.^2);
r_2=sqrt((X-1).^2+(Y-2).^2);
%u=exp(-1/(2*R^2)*r.^2).*exp(1i*2*pi/lambda*r);
u=peaks(X,Y).*exp(1i*2*pi/lambda*r);
figure(1)
subplot(2,1,1)
mesh(X,Y,real(u))
title('Re[u]')
subplot(2,1,2)
mesh(X,Y,imag(u))
title('Im[u]')


u_ft=fft2(u);
figure(2)
fx=1/(N*0.1)*((1:N)-N/2);
[Fx,Fy]=meshgrid(fx,fx);
mesh(Fx,Fy,abs(fftshift(u_ft)))

u_abs=abs(u);
U_abs=abs(u_ft);
N_max=1000;

u_k=u_abs;

figure(3)
subplot(2,1,1)
mesh(X,Y,real(u_k))
subplot(2,1,2)
mesh(X,Y,imag(u_k))

error=zeros(1,N_max);
for k=1:N_max
   phi_1=angle(fft2(u_k));
   U_k=U_abs.*exp(1i*phi_1);
   phi_2=angle(ifft2(U_k));
   u_k=u_abs.*exp(1i*phi_2);
   u_out=exp(-1i*angle(u_k(floor(N/2),floor(N/2))))*u_k;
   error(k)=mean(mean(abs(u_out-u)));
end

figure(4)
subplot(2,1,1)
mesh(X,Y,real(u_out))
subplot(2,1,2)
mesh(X,Y,imag(u_out))

figure(5)
plot(1:N_max,error)

本文地址:https://blog.csdn.net/certate/article/details/107270354