Azzera filtri
Azzera filtri

y-axis are still inverted despite using fftshift

2 visualizzazioni (ultimi 30 giorni)
Nishant Pathak
Nishant Pathak il 20 Nov 2021
Commentato: Dave B il 20 Nov 2021
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');

Risposte (1)

Dave B
Dave B il 20 Nov 2021
Modificato: Dave B il 20 Nov 2021
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 Commenti
Nishant Pathak
Nishant Pathak il 20 Nov 2021
Corrected the code. Can you please check now?
Dave B
Dave B il 20 Nov 2021
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

Accedi per commentare.

Categorie

Scopri di più su Graphics Performance in Help Center e File Exchange

Prodotti


Release

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by