questions about 2D chirped Z-transform (CZT)
9 次查看(过去 30 天)
显示 更早的评论
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
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
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Signal Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!