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

eval - Verschachtelung

 

steffen1187
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 19.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 08:06     Titel: eval - Verschachtelung
  Antworten mit Zitat      
Guten Morgen zusammen,

ich habe mal wieder ein Problem, an dem ich so nicht weiter komme.

als kleine Erklärung vorneweg:
Ich habe für mehrere Objekte Messwerte in Form von jeweils einer 15x14 Matrix liegen. Ich möchte in mehreren Schritten zunächst Fehlende Messwerte interpolieren, dannmit interp2 weiter Stützpunkte generieren und zuletzt plotten. Generell hab ich das ganze schon gelöst, allerdings von Hand für jedes Objekt und immer wieder das selbe untereinander.

Nun habe ich mir gedacht das muss doch auch einfacher gehen und Arbeite mit dem eval Befehl.

Code:

inj = {'inj224','inj227'};
Anzahl_inj = size(inj,2);
for i=1:Anzahl_inj
    inj_mess{1,i} = [eval('inj{i}') '_mess'];
    inj_voll{1,i} = [eval('inj{i}') '_voll'];
end
 


nach und nach werden weiter Objekte mit dem Namen inj... hinzukommen. inj_mess zum Beispiel ist dann die Matrix mit fehlenden Werten, inj_voll mit inter / extrapolierten Werten

nun habe ich folgendes Problem:
Ich möchte wie schon kurz beschrieben in einer weiteren for i=1:Anzahl_inj
Schleife für alle Objekte etwa sablaufen lassen. eval(inj_mess{j}) gibt mir dann ja zum Beispiel den Variablennamen zurück den ich hinterlegt habe. Die Variable wird zu Beginn des m_files geladen und ist wie beschrieben eine 15x14 Matrix. Wie kann ich nun direkt auf einen bestimmten Wert zugreifen? Bislang definiere ich mit mess = eval(inj_mess{j}) und greife mit mess(i,k) auf ein Element zu.

Im nächsten Schritt soll allerdings dann die noch nicht vorhandene Matrix inj_voll gefüllt werden, wenn ich mit voll=eval(inj_voll{j}) dies auf die selbe Art machen will wird jedoch die Fehlermeldung "Error using eval
Undefined function or variable" ausgegeben.

Sehe ich das richtig, dass der Inhalt von inj_voll nach wie vor nur ein STring ist und ich Matlab beibringen muss, dass es nun eine Matrix zu sein hat. Nur
Wie mach ich das?
Ich steh irgendwie auf m Schlauch Wink

Danke euch!
Grüße
Steffen
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.03.2012, 08:17     Titel:
  Antworten mit Zitat      
hmm wie kommen die neuen variabelen denn hinzu? eval ist immer schlecht zu debuggen. und sollte wenn möglich vermieden werden. die daten sollten lieber gleich in einem cellarray angelegt werden oder in einer struct falls man die namen behalten will. du solltest also versuchen lieber gleich bei der variablen eingabe die werte korrekt anzulegen anstatt später alles mit eval machen zu müssen
auf inhalte von cellarrays kann mana normal zugreifen ohne es extra einer anderen variablen zuzuweisen
Code:
x{k,l}(m,m)
Private Nachricht senden Benutzer-Profile anzeigen
 
steffen1187
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 19.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 08:21     Titel:
  Antworten mit Zitat      
Servus,

die einzelnen Messwerte / die Matrizen "inj_mess" lege ich manuell an, danach sollen sie nur noch verwendet werden

ich werde mich mal einlesen was n cell - array ist, vllt hilft mir das ja weiter Smile

dankeschön
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.03.2012, 08:44     Titel:
  Antworten mit Zitat      
du verwendest oben schon ein cellarray. aber wenn du die einzelnen messwerte anlegst kannst du sie auch gleich in dem cellarray anlegen und nicht erst in ner extra datai und dnan mit eval einlesen. wenn du gerne die namen benutzen willst dann leg es in einer struct an.
Code:
mess.inj224=matrix;
voll.inj224=matrix2;
oder so. da kann man damm mit
Code:
die einzelnen einträge ermitteln und per schleife durchlaufen wenn man das will.
Private Nachricht senden Benutzer-Profile anzeigen
 
steffen1187
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 19.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 10:22     Titel:
  Antworten mit Zitat      
Servus,

ich habs eben mal ausprobiert und glaub s gibt noch ein kleines Missverständnis:

ich möchte ein Array "inj_mess" haben, in dem die Variablennamen "inj224_mess" oder "inj227_mess" etc. liegen. Hiermit möchte ich nach und nach auf die Messwerte für verschiedene Objekte zugreifen. Die Messwerte heißen "inj224_mess" zum Beispiel und stellen eine weitere Matrix dar. Per inj_mess{1}(1,1) greife ich auf den Buchstaben i von "inj224_mess" zu und nicht auf den Inhalt "Spalte 1, Zelle 1" der Matrix mit dem Namen "inj224_mess"

ich hoff ich stell mich grad nicht besonders ungeschickt an...


edit: ich zieh meine Frage zurück, ich hab mich dumm angestellt! Wink
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.