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

mehrere Plots

 

Platin
Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2010, 17:38     Titel: mehrere Plots
  Antworten mit Zitat      
Hallo an Alle,

ich habe folgendes Problem mit dem Plot befehl.
Ich habe mehrere Plots die ich mir erstelle.
Das sind ungefähr 30 Stück. Nun weise ich jedem dieser Subplos den befehl subplot zu.
Was ich machen möchte ist die mit dem befehl subplot erstellten Plots, also die die in meinem Fall aus 4 Plots bestehen zu speichern und gleichzeitig aber auch die einzelnen Plots. Und zwar beides seperat in verschiedenen Ordnern.
Das wollte ich mit dem Befehl saveas erreichen, indem ich jenen für beide Plots genommen habe und zwar in der Form:
Code:

a=figure(1);
subplot(2,2,1);
n=plot(x,y;x2,y2);  % enthält also 2 Graphen
saveas(n,fullfile(pfad,'Subplots'),'fig');  % in Ordner Subplots
saveas(a,fullfile(pfad,'Plot1'),'fig'); % in Ordner Plots_einzeln
 


das ganze geht dann noch weiter:
Code:

subplot(2,2,2);
i=plot(x,y;x2,y2);  % enthält also 2 Graphen
saveas(i,fullfile(pfad,'Plot2'),'fig');  % in Ordner Subplots
 



Das Ganze geht eben bis subplot(2,2,4) und dann kommt ne neue figure.
Und ich möchte in Prinzip das diese figures welche immer 4 Subplots enthalten seperat in einem ordner Subplots gespeichert wird, aber die verschidenen subplots möchte ich einzeln in andere Ordner abspeichern.

Jeodoch erscheint folgende Fehlermeldung:
Code:

??? Operands to the || and && operators must be convertible to logical scalar values.

Error in ==> saveas at 64
    while ~isfigure(h) && ~isempty(h)
 


Kann mir jmd helfen ?
Private Nachricht senden Benutzer-Profile anzeigen


Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 20.11.2010, 13:17     Titel:
  Antworten mit Zitat      
Ich hab mich jetzt nicht genauer mit dem Problem befasst, aber du sagst:

while ~isfigure(h) && ~isempty(h)

so lange wie es keine Figure ist und es steht etwa drin tue etwas...
sicher? Mach mal aus && ein & und teste es.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2010, 18:13     Titel: Re: mehrere Plots
  Antworten mit Zitat      
Hallo Platin,

Zitat:
Code:

a=figure(1);
subplot(2,2,1);
n=plot(x,y;x2,y2);  % enthält also 2 Graphen
saveas(n,fullfile(pfad,'Subplots'),'fig');  % in Ordner Subplots
 


Jeodoch erscheint folgende Fehlermeldung:
Code:

??? Operands to the || and && operators must be convertible to logical scalar values.

Error in ==> saveas at 64
    while ~isfigure(h) && ~isempty(h)
 

Vielen Dank für eines der sehr wenigen Beispiele, bei denen Matlab's Fehlermeldungen nicht hilfreich sind!
SAVEAS erwartet einen FIGURE Handle. Ganz kulant akzeptiert es aber auch Handle-Grafik-Objekte, versucht dann aber immer die Figure zu suchen, die das Objekt enthält. Leider funktioniert das nur für skalare Handles, während Dein PLOT-Kommando mehrere Handles zurückliefert!

Lösung: Du kannst nicht ein einzelnes AXES-Objekt per SAVEAS speichern. Eine ".fig"-Datei muss einfach eine ganz Figure enthalten! Du könntest per COPYOBJ die einzelnen Subplots also zunächst in eigene FIGUREs kopieren, und danach per SAVEAS abspeichern.

Zudem könntest Du einen Bugreport an MathWorks schreiben: Fehlermeldung von SAVEAS ist irreführend, wenn H ein Vektor ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2010, 20:16     Titel:
  Antworten mit Zitat      
Hey Jan,

ich bin gerade etwas verwirrt.
Was meinst du mit AXES-Object ? Also meine beiden Grafen die ich in einem Bild speichern möchte sind doch ne figure?
Ich verstehe das Problem noch nicht, weil ich nicht so recht weiß was der unterschiede zwischen figure und AXES-Object ist?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.11.2010, 02:42     Titel:
  Antworten mit Zitat      
Hallo Platin,

Der Unterschied läßt sich leicht erklären. Tipp mal ein:
Code:

Alles, was sich in dem erscheinenden Rechteck (also das Fenster) befindet, gehört zur FIGURE.

Nun:
Code:

Nun erscheint ein AXES-Objekt, in dem Du Diagramme etc zeichnen kannst. AXES werden z.B. auch automatisch vom SUBPLOT-Commando erstellt.

Wie immer: "help figure" und "help axes" sind auch recht hilfreich.

SAVEAS speichert den Inhalt des FIGURE-Obkjektes. Deshalb muss man auch den Handle der Figure als Input verwenden. In Deinem Code wurden aber die Handles der gezeichneten Linien als Input für SAVEAS verwendet, was zu der nicht hilfreichen Fehlermeldung führte. Besser wäre eine Meldung wie: "Need a figure handle as input".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2010, 20:15     Titel:
  Antworten mit Zitat      
ok vielen dank
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 24.11.2010, 19:54     Titel: Re: mehrere Plots
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:


Zudem könntest Du einen Bugreport an MathWorks schreiben: Fehlermeldung von SAVEAS ist irreführend, wenn H ein Vektor ist.

Gruß, Jan


@Platin
Interessant wäre noch die Version zu erfahren, wo dieser Fehler auftaucht?

Ich hab in 2 Versionen ausprobiert, also in 2009b taucht schon die richtige Fehlermeldung auf.
Zitat:

??? Error using ==> saveas at 59
Invalid handle.



in 2007b taucht überhaupt kein Fehler auf, Übergabe von Plot-Handle wird ohne Probleme geschluckt, und die Figure auch richtig abgespeichert.

Also muss wohl der Fehler zwischen den Beiden Versionen auftreten.
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 - 2025 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.