2010-05-19 7 views
13

Ich möchte die Achsen in meiner Serie von Bildern, die angezeigt werden, bearbeiten. DieseWie bearbeite ich die Achsen eines Bildes in MATLAB, um die Richtung umzukehren?

ist, was mein Bild sieht so aus:

parabola

Wie Sie sehen können, es reicht von 0 bis etwa 500 von oben nach unten. Kann ich das invertieren? Plus, ich möchte das Bild, das gezeigt wird, spiegeln, so dass es von links nach rechts beginnt ... oder, wenn es möglich ist, lassen Sie die Achsen von rechts nach links zeigen.

Antwort

17

eine Achse umkehren, können Sie die 'XDir' oder 'YDir' Eigenschaft des current axes auf 'reverse' einstellen:

set(gca,'XDir','reverse'); %# This flips the x axis 

Beachten Sie, dass auf diese Weise eine Achse gespiegelt wird und alles in die Handlung dreht. Dies ist wahrscheinlich nicht das, was Sie für die Y-Achse tun möchten. Sie wollen wahrscheinlich nur der y-Achse Etiketten kippen, die Sie durch Modifizieren der 'YTickLabel' Eigenschaft in der folgenden Art und Weise tun:

yLimits = get(gca,'YLim'); %# Get the y axis limits 
yTicks = yLimits(2)-get(gca,'YTick'); %# Get the y axis tick values and 
             %# subtract them from the upper limit 
set(gca,'YTickLabel',num2str(yTicks.')); %'# Convert the tick values to strings 
              %# and update the y axis labels 
+0

Danke, das funktioniert perfekt !! Danke für das Hinzufügen von Kommentaren, damit ich verstehen kann, wie der Code funktioniert! - Eine zusätzliche Frage, kann ich die Werte der X-Achse/Y-Achse ändern? – NLed

+0

@ZaZu: Sie können die Achsenwerte ändern, indem Sie die Eigenschaften "XTick" und "YTick" der Achsen ändern. Wenn die Eigenschaften "XTickLabelMode" und "YTickLabelMode" auf "auto" gesetzt sind (Standardeinstellung, wenn Sie die Beschriftungen nicht geändert haben), werden die Beschriftungen automatisch aktualisiert, nachdem Sie die Tick-Werte geändert haben. Andernfalls müssen Sie die Etiketten selbst aktualisieren. – gnovice

+0

Danke, einfach unglaublich :) – NLed

2
Im = imread('onion.png'); 

Im = flipdim(Im ,1); % vertical flip the image. 

axis xy; %set the xy to be at (0,0), this flips the image back again. 

Und whoop dee doo das Bild nun eine y-Achse haben mit der Bereich von unten nach oben!

Wie kann ich die y-Achse umkehren, wenn ich die Funktion IMAGE oder IMAGESC zur Anzeige eines Bildes in MATLAB verwende?Another solution from mathworks

2

Ich fand Gnovice's Antwort hilfreich, aber es brauchte einige Verbesserungen für mich. Ich denke, das Folgende ist eine allgemeinere Möglichkeit, die Beschriftungen auf der y-Achse umzukehren. Einfach die y-Tick-Nummern in absteigender Reihenfolge sortieren und umbenennen.

yTicks = get(gca,'YTick'); 
yTicks_reverse = sort(yTicks,2,'descend');          
set(gca,'YTickLabel',num2str(yTicks_reverse.')); 
+0

Schneller und einfacher, denke ich: 'image (Im); Satz (gca, 'YDir', 'normal') ' –

0

wurde ich hier von einer doppelten Frage umgeleitet: Flipping axis ticks

Was Ale "war da tun wollte nur drehen Sie die y-Achsen-Richtung zu sein, von oben nach unten. Wenn das die einzige Sache ist, die gebraucht wird und nichts anderes, würde ich verwenden:

axis ij 
Verwandte Themen