Ich will eine plot function schreiben, die einen Graph mit der beliebige Anzahl von kurven erzeugt.
Beispiel: Ich habe die Messwerte bei verschiedenen Temperaturen und Drucken.
Mal sind es 2 Temperaturen
Temp/C Druck/bar Value
'-40.00' 0 2.51
'-40.00' 150 3.02
'-40.00' 250 5.34
'23.00' 0 1.25
'23.00' 150 2.21
'23.00' 250 3.06
Mal sind es 3 Temperaturen
Temp/C Druck/bar Value
'-40.00' 0 2.51
'-40.00' 150 3.02
'-40.00' 250 5.34
'23.00' 0 1.25
'23.00' 150 2.21
'23.00' 250 3.06
'50.00' 0 2.32
'50.00' 150 3.71
'50.00' 250 5.19
Die Anzahl der Druckwerte variiert auch. Der Graph soll die abhängigkeit der Werte von dem Druck darstellen. Je nach dem wie viele Temperatur-Werte man hat, so viele Kurven sieht man auf dem Graph.
Code:
Hier ist meinen Code
hf=figure; % create figure hold on % retain current graph in figure % plot results for k = 1:length(coutTValues)
a = genvarname('x', who);
b = genvarname('y', who);
eval([b,'=Values(', von, ':', bis ',ColumnValues));']) eval([a,'=Values(', von, ':', bis ',ColumnPressure));']) eval(['plot(', a, ',', b, ',', char(39), LineSpec, char(39), ');']) end legend('show')
Das Problem ist die Legende richtig zu beschriften. Jetzt kriege ich nur data1, data2 usw., will aber '-40.00', '23.00' stehen haben.Ich habe schon versucht das über handle hin zu bekommen.
warum tust du dir auch dieses Drama mit eval an? Das tut doch schon in den Augen weh.
Wenn du dabei bleiben willst, wäre es am geschicktesten, ein Cell Array mit den Legenden zu erstellen.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hallo Harald
Mir ist schon bewusst, dass das schrecklich aussieht. Nur habe ich bis jetzt keine andere Methode kennengelernt, um irgendwas in Matlab dynamisch zu erzeugen.
Wenn die Sorge ist, dass x schon als Variablenname vergeben ist: aussagekräftige Variablennamen verwenden. "Values" verwendest du ja auch.
Funktioniert im übrigen mein Vorschlag für die Legende?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Nur habe ich bis jetzt keine andere Methode kennengelernt, um irgendwas in Matlab dynamisch zu erzeugen.
Das sollte Dir zu denken geben. Das dynamische Erzeugen von Variablen ist nämlich schlicht unübersichtlich, langsam, ineffizient und immer vermeidbar. Deshalb gibt es auch keine hübsche Method dafür.
Zu erst bedanke ich mich für ihre Antworten!
An Harald: Dir ist meinen besonderen Dank für deinen Vorschlag. Ich werde es heute ausprobieren. Bezüglich; "auss6agekräftige Variablennamen verwenden." Ich will plot funktion verwenden, plot(x1, y1, x2, y2 xn, yn). Ich weiß aber nicht wie viel x und y Werte ich haben werde. Ich kann zwar die Daten in eine Struktur packen und über Index ansprechen, aber das Problem, die Legende richtig zu beschriften, wird bleiben. So was in der Art:
Code:
Structur.data for i=1:length(structur.data(:,Column))
x= structur.data(i*laenge, xColumn);
y= structur.data(i*laenge, yColumn);
plot(x,y);
end
Jetzt interessiert mich das Thema aber wirklich. Wie geht man bei der Programmierung vor, wenn die Objekt-Menge vorher nicht bekannt ist oder soll sich während des Programmablaufs ändern. Wo kann ich Best Practices für das Thema finden (Link zu der Homepage oder Buch). Ich bedanke mich im Voraus.
Du siehst, ich kann dieselbe Schreibweise verwenden, egal wieviele Wertepaare c enthält.
Zu den Legenden hatte ich ja schon eine Möglichkeit angeboten. Falls die nicht funktioniert, bitte sagen wieso und warum.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
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.