y-axis are still inverted despite using fftshift
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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');
0 commentaires
Réponses (1)
Dave B
le 20 Nov 2021
Modifié(e) : Dave B
le 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 commentaires
Dave B
le 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
Voir également
Catégories
En savoir plus sur Display Image dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!