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

plotten von mehreren dynamischer arrays per laufvarible

 

vincentvega
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 29.07.2010, 16:34     Titel: plotten von mehreren dynamischer arrays per laufvarible
  Antworten mit Zitat      
ich habe jetzt n-mal gleichgroße Matrizen die alle nach dem gleichen schema benannt sind und deren Namen sich durch eine laufnummer am namensende unterscheiden.

also wie folgt


measuredata1
measuredata2
measuredata3
....
measuredatan


Nun will ich immer jeweils zwei spalten von diesen matrizen plotten.
dazu hab ich mir folgenden algorithmus ausgedacht der nicht ganz funktioniert. kann mir da jemand weiterhelfen?

Code:


figure;
for m=1:anzahl01;
%     if ( rem(m,2) == 0)
        eval(sprintf('plot(measuredata%d(:,7),measuredata%d(:,8));', m));
%     end;
end;

 


das programm soll die 7.Spalte und die 8.spalte der Matrix measuredata1 in einem karthesischen diagramm darstellen.
Private Nachricht senden Benutzer-Profile anzeigen


Napoleon
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 22.07.10
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 29.07.2010, 17:09     Titel:
  Antworten mit Zitat      
Hallo,

fehlt da nicht ein m?
Code:

eval(sprintf('plot(measuredata%d(:,7),measuredata%d(:,8));', m,m));
 


du hast hoffentlich irgendwo im Programm ein
Code:


sonst werden ja deine Graphen überschrieben.

viele grüsse
Private Nachricht senden Benutzer-Profile anzeigen
 
vincentvega
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 29.07.2010, 17:13     Titel:
  Antworten mit Zitat      
das hilft mir zwar beim problem nicht weiter aber danke für den hinweis.
hold on; ist im programm berücksichtigt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Napoleon
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 22.07.10
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 29.07.2010, 17:16     Titel:
  Antworten mit Zitat      
nur ein kleiner Tip damit dir geholfen wird.

du sollst schon das problem genauer beschreiben.
einfach sagen es funktioniert nicht ganz, das reicht nicht.

sind die ergebnisse nicht wie erwartet, kommen fehlermeldungen? wenn ja kannst du sie posten...

viel glück
Private Nachricht senden Benutzer-Profile anzeigen
 
vincentvega
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 29.07.2010, 18:01     Titel:
  Antworten mit Zitat      
hallo Napoleon,

ich hab eigentlich das problem schon gelöst bzw. den fehler ausfindig gemacht, aber ich werd dennoch mal versuchen mein problem mittels eines zusammenhängenden beispiels zu beschreiben.


mit dem folgenden quellcode erzeuge ich fünfmal die sinusfunktion z1 bis z5 und mit Argument x

Code:

x=0:0.1:2*pi;

for m=1:5;
    eval(sprintf('x%d = 1:0.1:2;', m));
    eval(sprintf('y%d = sin(x(:));', m));
end;
 


Dieser Quellcode funktioniert soweit und mit dem folgenden plotbefehl kann ich alle 5sinuse hintereinander plotten.

Code:

x=0:0.1:2*pi;

for m=1:5;
    eval(sprintf('plot(x(:),z%d(:));', m));      
end;
 


Soweit alles klar.

nun erzeuge ich zu den 5 sinusen auch fünf argumente x1 bis x5;

Code:


x=0:0.1:2*pi;
% y=zeros(1,length(x));

for m=1:5;
    eval(sprintf('x%d = 1:0.1:2;', m));
    eval(sprintf('y%d = sin(x(:));', m));
end;

 


Wenn ich jetzt versuche die beiden korrespondierenden sinuse bzw. z1 mit x1 zu plotten kommt eine fehlermeldung.

Code:

for m=1:5;
    eval(sprintf('plot(x%d(:),z%d(:));', m));      
end;
 


also sobald der eval-befehl zwei laufvariable in seinem argument hat gibt es probleme.

kennt einer eine methode wie es trotzdem geht?

Danke und gruß,

vinny
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: 30.07.2010, 14:55     Titel:
  Antworten mit Zitat      
Hallo vincentvega,

Ich bin ein wenig verzweifelt. Wozu fügst Du so viele verwirrende EVALs in den Code ein? Matlab kennt Vektoren, Matrizen, Cells und Structs. Wieso möchtest Du eine Dimension der Daten unbedingt im Namen der Variablen verschlüsseln? Ich rate davon für heute zum letzten Mal eindeutig und ausdrücklich ab. Es behindert Matlab beim Rechnen und den Progarmmierer beim Debuggen.

Zitat:
Code:

for m=1:5;
    eval(sprintf('plot(x%d(:),z%d(:));', m));      
end;
 


also sobald der eval-befehl zwei laufvariable in seinem argument hat gibt es probleme.

Die allgemeine Äußerung, dass es Probleme gibt, hilft nicht viel weiter. Bitte lese die aussagekräftige Fehlermeldung, und wenn sie noch keine Erleuchtung bringt, poste eine Kopie.

Dank meiner Kristallkugel meine ich aber zu sehen, dass SPRINTF zwei Zahlen braucht, wenn es zwei Fromat-Sepcifier hat:
Code:

for m=1:5;
    eval(sprintf('plot(x%d(:),z%d(:));', m, m));      
end;
 

Und dann natürlich noch, habe ich es schon erwähnt, geht das Ganze auch ohne EVAL.

Gruss, JanDerVorEvalWarntWeilErZuVieleNewsgroupBeiträgeVonVerwzeifeltenNutzernGelesenHat
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.