WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Neues Figure mit alten Daten

 

SuMo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2008, 11:44     Titel: Neues Figure mit alten Daten
  Antworten mit Zitat      
Hallo,
hab ein kleine Problemchen.
Ich erzeuge ein Figure (Figure(1) mit beliebig vielen dargestellten Datensaetzen. Ich moechte nun aus diesem Figer einen Bereich herauszoomen. Dafuer aendere ich eigentlich nur die Darstellung der x/y-Achse. Diese Darstellung moechte ich nun aber in einem neuen Figure (Figure(2)) darstellen und dieses Darstellung als z.B. jpg abspeichern. Das mit dem abspeichern funktioniert auch ganz gut, leider aber nur mit dem ersten Figure (Figure(1).
Moechte ebn nur ein Spiegelbild/Kopie erstellen und evtl noch eine paar Modifikationen in der Darstellung vornehmen wie Linienfarbe etc. (aber dann eben nur in Figure(2)).

Solange ich nur einen Datensatz habe funktioniert es mit dem get(gca..)-Befehl. Bei mehreren Datensaetzen bekomme ich nur Fehlermeldung.

Hat jemand einen kleinen Tipp??????

Danke Euch im Voraus........


Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 23.01.2008, 19:41     Titel:
  Antworten mit Zitat      
Aus Ermangelung eines BEfehls, der ein figure in ein anderes kopiert, kann man evtl. folgendes machen:

quick'n'dirty
figure mit saveas und Endung *.fig abspeichern, wieder laden (dann in neuem fenster), Modifizieren und dann als jpg abspeichern.

Allerdings bin ich mir nicht sicher, ob die handles alle Erhalten bleiben - gerade zum ändern von Liniendicken brauchst Du die ja?
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 23.01.2008, 21:39     Titel:
  Antworten mit Zitat      
Hi,

hilft Dir vielleicht copyobj?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
SuMo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2008, 09:45     Titel:
  Antworten mit Zitat      
Hi,
erstmal Danke fuer die Tipps.

Hab mir gerade so selbst geholfen( Hab ich auch hier im Forum gefunden):
obj=get(gca,'Children');
xDat=get(obj,'XDat');
yDat=get(obj,'YDat');

xDat und yDat werden nach mehreren Durchlauefen zu einem cellarry (heisst glaub ich so?!?!?).
Danach hab ich die Daten in einer Schleife wieder zu einem Bild geplotet:
for k=1:Loop
plot(xDat{k,1},yDat{k,1},[b-- d']);
xlabel('Angle [deg]'), ylabel(Force[N]');
axis([xmin xmax ymin ymax]);
grid on;
hold on;
end

Ist vielleicht acu etwas umstaendlich, aber es funktioniert.

Versuch jetzt aber denoch den Befehl copyobj.
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 24.01.2008, 10:38     Titel:
  Antworten mit Zitat      
Zitat:
Hab mir gerade so selbst geholfen( Hab ich auch hier im Forum gefunden):

die Lösung ist ok, aber etwas umständlich...

schau doch was Dir nschlange geschrieben hat - COPYOBJ.
Code:
haxesnew = copyobj(haxes,figure)

haxes ist der Handle von der Axes woraus Du die Plots kopieren willst
Damit kannst viell schneller zum Ergebnis kommen. Gerade mal eine Zeile und das wars... Smile


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
SuMo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2008, 11:02     Titel:
  Antworten mit Zitat      
Hi outsider,

bin anscheinend zu doesig um mit dem Befehl zu arbeiten Embarassed . Komm nicht so mit der Syntax zurecht.
Wie ist die genaue Abfolge mit den Befehlen?

Annahme ich habe ein Figure erstellt, nenenn wir es doch mal figure(1).

Wie muessen die naechsten Zeilen ausschauen, damit ich aus figure(1) ein figure(2) bekomme mit der gleichen Darstellung der Daten?

Kann mit den vielen Fehlermeldung die bei meinen Versuchen kommen nicht viel anfangen, dafuer fehlt mir das Hintergrundwissen bei Matlab.

Danke fuer die Unterstuetzung
 
SuMo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2008, 12:18     Titel:
  Antworten mit Zitat      
Und noch ein kleines Problem.

Mit meinen, etwas umstaendlichen Weg, ist noch ein Prob aufgetreten. Bei der Darstellung des zweiten Fig. werden die Linienfarben in der umgekehrten Reihenfolge dargestellt. In Figure(1) ist Lininenfarbe1 blau, L2 ist rot. Mit meinem Weg verdrehen sich ploetzlich die Farben.
Code:
lineclr_detail=['b' 'r' 'g' 'k' 'm' 'c' 'y']; %Hilfsvektor zur Darstellung der Farben, entspricht der Reihenfolge aus Fig1
                            for k=1:LoopNum
                            plot(xDat{k,1},yDat{k,1},[char(lineclr_detail(k)),'-']);
                            xlabel('Angle [deg]'), ylabel('Torque [Nm]');
                            axis([-3.01 -2.8 y_0 y_1]); %Plot the x-Axxis from -3.01to-2.8
                            grid on;
                            hold on;
                        end
 

Hab nochmal den gasamten Abschnitt dargestellt. WO liegt das Prob?
Kann es sein, das beim auslesen der Daten, seihe Fred von mir oben, die neuen Daten nicht hintenangesetzt werden, sondern vorne und somit sich alles nach hinten verschiebt? Wuerde die Umkehrung jedenfalls erklaeren oder?

Schein alles auf COPYOBJ hinauszulaufen. Und da waeren wir bei meinem alten Prob......... Laughing
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 24.01.2008, 12:42     Titel:
  Antworten mit Zitat      
Dieses Beispiel sollte Dir helfen nachzuvollziehen, wie COPYOBJ Dir helfen kann. Abspeichern als M-File, starten und bissel durchklicken...
Code:
function Axiszoom_test
%
figure
ha = subplot(2,4,[1 2 5 6])
ha1 = subplot(2,4,3);
plot(rand(3,5))
ha2 = subplot(2,4,4);
plot(rand(3,5))
ha3 = subplot(2,4,7);
plot(rand(3,5))
ha4 = subplot(2,4,8);
plot(rand(3,5))
%
set([ha1 ha2 ha3 ha4],'ButtonDownFcn',{@click,ha})

function click(hObj,tmp,ha)
cla(ha)
copyobj(get(hObj,'Children'),ha)



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.