Effacer les filtres
Effacer les filtres

vertical axis is flipped

12 vues (au cours des 30 derniers jours)
Naema
Naema le 31 Mar 2015
Modifié(e) : Naema le 2 Avr 2015
Hi Matlab users: I am facing two strange problems. The first problem is with figure#1; it is inverted in y. The following code reads the .txt file ,which is attached, to be inverted in (y). I am wondering what could be wrong in my code that the data in the .txt file are inverted vertically. Second problem is with figure#4: Why the vertical axis is flipped in figure#4. The y axis shows the minus on top and the positive side on bottom. NOTE: this code produces the result in one minute, please run it and give me your comments.
clear all;
close all;
clc;
x1=-2.5:1e-3:2.5;
y1=-2.5:1e-3:2.5;
step=30;
randomscannb=100;
lambda0=1.31;
rf=((2.25)/2);
[X1,Y1]=meshgrid(x1,y1);
Ey2a4=exp((-X1.^2-Y1.^2)/rf^2);
Ey1a4=dlmread('C:\Users\kgazz012\Desktop\March19th\ccccc_10t_10w_1nmstep.txt');
Ey1a4c=conj(Ey1a4);
sfinalmatrix=size(x1);sfinalmatrix=sfinalmatrix(2);
figure(1);subplot(1,2,1);imagesc(real(Ey1a4));title('Ey1a4 real part')
axis square;
figure(2);subplot(1,2,1);imagesc([x1(1) x1(sfinalmatrix)],[y1(1) y1(sfinalmatrix)],real(Ey2a4));title('Ey2a4 real part');xlabel('um')
axis square;
figure(1);subplot(1,2,2);imagesc(imag(Ey1a4));title('Ey1a4 imag part')
axis square;
figure(2);subplot(1,2,2);imagesc([x1(1) x1(sfinalmatrix)],[y1(1) y1(sfinalmatrix)],imag(Ey2a4));title('Ey2a4 imag part');xlabel('um')
axis square;
fiberscan=Ey2a4+1;
selectedscan=round(rand(1,randomscannb)*(sfinalmatrix*sfinalmatrix)/(step^2));
match=0;
C=zeros(sfinalmatrix,sfinalmatrix);
Norma = sum(sum(Ey2a4.*conj(Ey2a4)))*sum(sum(Ey1a4.*conj(Ey1a4)));
c=0;
tic
for b=1:step:sfinalmatrix-300+1
for a=1:step:sfinalmatrix-248+1
c=c+1;
display(strcat('fractionexecuted=',num2str(c*(step^2)/(sfinalmatrix*sfinalmatrix))))
fib=Ey2a4(b:b+300-1,a:a+248-1);
fn=fib.*conj(Ey1a4);
C(b+150,a+124)=sum(sum(fn))./sqrt(Norma); for k=1:randomscannb
if c==selectedscan(k)
match=1;
end
end
if match==1
fiberscan(b:b+300,a:a+5)=0;
fiberscan(b:b+300,a+243:a+248)=0;
fiberscan(b:b+5,a:a+248)=0;
fiberscan(b+295:b+300,a:a+248)=0;
match=0;
end
end
end
toc
pack
result=abs(C);
figure(100);imagesc([x1(1) x1(sfinalmatrix)],[y1(1) y1(sfinalmatrix)],real(fiberscan));title('Ey2a4 with 100 random scan positions indicated');xlabel('um')
if step>1
resultx=real(result)*0;
for a=1:sfinalmatrix
for b=1:sfinalmatrix
if result(b,a)==0
elseif a>step+1 & b>step+1 & a<sfinalmatrix-step-1 & b<sfinalmatrix-step-1
hs=round(step/2);
resultx(b-hs:b+hs,a-hs:a+hs)=0*result(b-hs:b+hs,a-hs:a+hs)+result(b,a);
end
end
end
else
resultx=(result);
end
figure(3);subplot(1,2,1);imagesc([x1(1) x1(sfinalmatrix)],[y1(1) y1(sfinalmatrix)],real(resultx));title('real part of overalp');xlabel('um')
axis square;
figure(3);subplot(1,2,2);imagesc([x1(1) x1(sfinalmatrix)],[y1(1) y1(sfinalmatrix)],imag(resultx));title('imaginary part of overlap');xlabel('um')
axis square;

Réponse acceptée

Chad Greene
Chad Greene le 31 Mar 2015
Image axes are like that because image coordinates start at the top left corner if you're counting pixels. It's an old convention from image people, not from Matlab. Use
axis xy
  8 commentaires
Naema
Naema le 1 Avr 2015
here is the .txt file attached
Naema
Naema le 2 Avr 2015
Modifié(e) : Naema le 2 Avr 2015
should not I only flip the y-axis but not the result? When I use axis xy, it flips the y axis and the plotted result.Please, let me now what is the correct thing to do as the plotted result is unknown to be shifted up or down.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by