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

Legende aus Messwertdatei

 

Gast2011

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 11:56     Titel: Legende aus Messwertdatei
  Antworten mit Zitat      
Hallo alle zusammen,
ich habe ein Legendenproblem.

Und zwar lese ich eine Datei mit Messwerten ein und plotte die dann.
Nun möchte ich zu jedem Plot auch die Überschrift in einer Legende haben.
Also habe dann ich mehrere Plots in einem Fenster.

In der ersten Zeile der Datei stehen die Überschriften, die lese ich mit
Code:
fid = fopen('messwerte.txt',  'r');
tline = fgetl(fid);
fclose(fid);
c=textscan(tline,%s %s %s,1);
aus.
Die 1. Spalte ist für die x-Werte, die anderen beiden für y-Werte.

Nun hole ich mir die strings für die y-Werte mit
Code:
leg1 = c{1,2}
leg2 = c{1,3}
und möchte sie dann in die Legende packen.
Code:

Jedoch gibt er mir in der Legende nur den in "leg2" stehenden string an.

Wie kann ich das machen, das ich beide bekomme ?

Würde mich über Hilfe freuen...


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 20.11.2008, 15:29     Titel:
  Antworten mit Zitat      
Tut mir Leid Gast 2011,

ich kann den Fehler nicht nachvollziehen. Bei mir funktioniert es immer, egal wie ichs mache. Guck bitte nochmal was in leg1 und leg2 genau drin steht. Kannst du minimierten Beispielcode posten, der diesen Fehler auch erzeugt?

Ich schätze mal die Plots zeichnest du mit hold on hintereinander und öffnest auch keinen anderen plot. Könntest auch probieren das mal so zu machen, aber wenn du nur eine figure hast sollte das nicht das Problem gewesen sein:

Code:


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2011

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 16:08     Titel:
  Antworten mit Zitat      
Näh, so gehts leider nicht.

mein code sieht so aus:
Code:
fid = fopen('messwerte.txt',  'r');
tline = fgetl(fid);
fclose(fid);
daten= textscan(fid,'','headerlines',1);
c=textscan(tline,%s %s %s,1);

xdat=daten{1,1};
ydat1=daten{1,2};
ydat2=daten{1,3};
leg1 = c{1,3};
leg2 = c{1,4};
plot(xdat,ydat1,xdat,ydat2);
legend(leg1,leg2)

in leg1 und leg2 steht jeweils ein String drin(wie es sein soll)
nur zeigt er mir in der Legende nur das an, was in leg2 drinsteht und überschreibt den leg1
 
Gast2011

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 16:12     Titel:
  Antworten mit Zitat      
hab mich vertippt:
Code:
leg1 = c{1,2};
leg2 = c{1,3};
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 16:45     Titel:
  Antworten mit Zitat      
Hallo,

was passiert wenn du manuell zwei Strings eingibst?
Code:
legend('Datensatz1','Datensatz2');
Funktioniert es dann?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2011

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 17:40     Titel:
  Antworten mit Zitat      
Jo, dann funktioniert es, das habe ich auch schon getestet.
Es funktioniert auch, wenn ich einen string manuell eingebe und mir den anderen hole:
Code:
legend(leg1,'Datensatz1')


wenn ich den Ausdruck in legend jetzt allerdings mal umdrehe, also :
Code:
legend('Datensatz1',leg1)

zeigt er mir in der Legende nur den String aus leg1 an und überschreibt mir das 'Datensatz1'
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 18:37     Titel:
  Antworten mit Zitat      
Hallo,

kannst du mal
Code:
ausgeben lassen? Was passiert wenn du
Code:
legend({leg1 leg2});
ausführen lässt?

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2011

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2008, 10:26     Titel:
  Antworten mit Zitat      
Morgen,

wenn ich
Code:
eingebe, kommt als Antwort: ans = cell

Wenn ich
Code:
legend({leg1 leg2});
ausführen lasse, kommt die Fehlermeldung :

??? Error using ==> legend>process_inputs at 552
Cell array argument must be a cell array of strings.

Error in ==> legend>make_legend at 319
[orient,location,position,children,listen,strings,propargs] = process_inputs(ha,argin);

Error in ==> legend at 276
[h,msg] = make_legend(ha,varargin(arg:end));

Error in ==> test at 57
legend({leg1 leg2});


Gruß
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 21.11.2008, 13:05     Titel:
  Antworten mit Zitat      
Ok,

da liegt dein Problem, anscheinend ist leg1 ein cell array schätze mal 1x1, aber es sollte ein char array sein. D.h. vorerst sollte es reichen wenn du vor dem legend folgendes einfügst:

Code:

leg1=char(leg1);
leg2=char(leg2);
 


Allerdings solltest du auch gucken warum das so gekommen ist, eigentlich sollte das nicht passieren.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2011

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2008, 10:53     Titel:
  Antworten mit Zitat      
Herzlichen Dank Oli,
es funktioniert,
gucken ob ich mich auf Fehlersuche begebe, bin froh das es funzt
 
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.