y-axis are still inverted despite using fftshift

2 ビュー (過去 30 日間)
Nishant Pathak
Nishant Pathak 2021 年 11 月 20 日
コメント済み: Dave B 2021 年 11 月 20 日
I have used the Matlab codes for simulating a phase screen. However, as you can see in the figure, y-axis are still inverted despite using fftshift. Please resolve this issue.
M = 3001;
a=3;
d = (M-1)/2; fx = (-d:d);
kx = (ones(2*d+1,1)*fx).^2; K = sqrt(kx+transpose(kx));
D = K.^(-a);
D(d+1,d+1) = 0;
R = randn(2*d+1)+1i*randn(2*d+1);
PS = (fft2(fftshift(sqrt(D).*R)));
figure(1); imagesc(abs(PS)); colormap(gray);title('Phase screen');

回答 (1 件)

Dave B
Dave B 2021 年 11 月 20 日
編集済み: Dave B 2021 年 11 月 20 日
Your code doesn't run and you didn't include an image, but in general, when you call imagesc it will plot in ij coordinates, meaning that 0,0 is at the top left corner of the axes. To switch to traditional xy coordinates, simple use:
axis xy
(after calling image)
Alternatively, you can control the YDir property on the axes:
set(gca,'YDir','normal')
  2 件のコメント
Nishant Pathak
Nishant Pathak 2021 年 11 月 20 日
Corrected the code. Can you please check now?
Dave B
Dave B 2021 年 11 月 20 日
I just added my answer to the bottom of your code, is this not what you're looking for?
M = 3001;
a=3;
d = (M-1)/2;
fx = (-d:d);
kx = (ones(2*d+1,1)*fx).^2;
K = sqrt(kx+transpose(kx));
D = K.^(-a);
D(d+1,d+1) = 0;
R = randn(2*d+1)+1i*randn(2*d+1);
PS = (fft2(fftshift(sqrt(D).*R)));
figure(1); imagesc(abs(PS));
colormap(gray);
title('Phase screen');
axis xy

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

カテゴリ

Help Center および File ExchangeDisplay Image についてさらに検索

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by