questions about 2D chirped Z-transform (CZT)

7 ビュー (過去 30 日間)
Jiali
Jiali 2020 年 9 月 21 日
コメント済み: Jiali 2021 年 7 月 15 日
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 件のコメント
Chutian Wang
Chutian Wang 2021 年 6 月 23 日
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 2021 年 7 月 15 日
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

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangePattern Recognition and Classification についてさらに検索

製品


リリース

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by