questions about 2D chirped Z-transform (CZT)

8 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)

Catégories

En savoir plus sur Signal Processing Toolbox dans Help Center et File Exchange

Produits


Version

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by