questions about 2D chirped Z-transform (CZT)

7 vues (au cours des 30 derniers jours)
Jiali
Jiali le 21 Sep 2020
Commenté : Jiali le 15 Juil 2021
Dear Community,
I have a 2D image in K-space and need to transform back to Cartesian coordinate. But When I use the 2D CZT to achieve it, I got multiple images in Cartesian coordinate. The method is that I did the column 1D czt and then row 1D czt to achieve 2D czt. I know it arise from negative frequency, but I got stuck with removing them. Or I wonder whether the 2D czt method is correct. Any experts, Could you please give me some suggestions?
clear all;
cc = 2.99792458E8;
x=linspace(-10e-6,10e-6,401);
y=linspace(-11e-6,11e-6,441);
X=(meshgrid(x,y)).';
Y=meshgrid(y,x);
lambda0=0.5e-6;
f=cc/lambda0;
w=2*pi*f;
k=2*pi/lambda0;
NA=0.2;
kx=linspace(-k,k,201);
ky=linspace(-k,k,221);
Kx=(meshgrid(kx,ky)).';
Ky=meshgrid(ky,kx);
phi=atan2(Ky,Kx);
theta=real(acos(sqrt(1-Kx.^2./k^2-Ky.^2/k^2)));
envelope=exp(-0.5.*(Kx.^2+Ky.^2)./(NA.*k)^2);
Exk=cos(phi).*cos(theta).*envelope;
ny=length(y);
fy1=min(y);
fy2=max(y);
samp_freq_y=1/(ky(2)-ky(1));
wy=exp(1i*2*pi*(fy2-fy1)/(samp_freq_y*ny));
ay=exp(1i*2*pi*fy1/samp_freq_y);
tmp=czt(Exk.',ny,wy,ay);
Exf=(tmp).';
figure;imagesc(abs(Exf));
nx=length(x);
fx1=min(x);
fx2=max(x);
samp_freq_x=1/(kx(2)-kx(1));
wx=exp(1i*2*pi*(fx2-fx1)/(samp_freq_x*nx));
ax=exp(1i*2*pi*fx1/samp_freq_x);
Exf=czt(tmp,nx,wx,ax);
figure;
imagesc(abs(Exf));
  2 commentaires
Chutian Wang
Chutian Wang le 23 Juin 2021
Hi, I think the problem is that you consider theconvert from k_space to x_space rather than from u_space to x_space.
There should be some difference when you take the 2*pi factor into consideration.
Try modify your "samp_freq_y=1/(ky(2)-ky(1))" into "samp_freq_y=2*pi/(ky(2)-ky(1))", this is because of the sampling freq. in frequency domain is not 1/dk, it is 1/du=1/(dk/(2*pi)).
Best regard
Jiali
Jiali le 15 Juil 2021
Hi Dr. Wang,
I got what do you mean since k space and u space are a little different. However, if I replace the expressions from samp_freq_x=1/(kx(2)-kx(1)) to samp_freq_x=(2*pi)/(kx(2)-kx(1)) and from samp_freq_y=1/(ky(2)-ky(1)) to samp_freq_y=(2*pi)/(ky(2)-ky(1)), the results still don't make sense. Any more suggestions?
Best Regards,
Jiali

Connectez-vous pour commenter.

Réponses (0)

Produits


Version

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by