Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Verkehrssimulation: Modell aus Buch mit Simulink nachstellen

Studierende:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Variable Zuweisung (for-Schleife)

 

Bella90
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 05.07.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2021, 17:35     Titel: Variable Zuweisung (for-Schleife)
  Antworten mit Zitat      
Hallo alle zusammen, bei mir hat sich während des Programmierens eine kleine Frage ergeben. Ich habe eine Vielzahl an verschiedenen Simulationsdaten aus csv-Dateien eingelesen. So existieren nun beispielsweise die Vektore R1, R2, R3 usw. (bis R100). Diese stellen die Argumente für geplante 100 Curvefits dar. Da die Vektoren für R1/R2/R3 etc. alle unterscheidlich lang sind, kann ich die einzelnen Datenpunkte leider nicht in einem großen Array ablegen. Stattdessen habe ich sie alle unter einzelnen, individuell nummerierten Variablenbezeichnungen eingelesen.

Nun möchte ich das umfangreiche Curvefit-Verfahren (Function curvefit steht und läuft) gern automatisieren. Das Problem hierbei ist, dass ich R1, R2 usw. von der Laufvariable abhängig aus dem darüber liegenden Programmteil einlesen müsste. Da es sich um einzelne Vektoren und keine große Matrix handelt, kann ich bei der Zuweisung natürlich nicht mit Spalten- oder Zeilenangaben arbeiten.

Hier ein kleiner Ausschnitt aus meinem Programm (z läuft erst einmal nur bis drei, weil ich zu Beginn ein übersichtliches Probebeispiel programmieren möchte):

Code:

for z=1:1:3
   
   % f1 - Ergebnisfunktion, (Rz/C_l) - geg. Datenpunkte
   [C_l(:,z) f1] = curvefit(Rz, C_l);

   % erzeugt fz (f1, f2, f3) für eine schnelle Zuweisung der Funktionsgleichungen
   assignin('base',['f' num2str(z)], f1);

end
 


Für z=1 soll nun automatisch Rz=R1 sein, für z=2 dann Rz=R2 usw. Ist das prinzipiell möglich?
Im Prinzip handelt es sich also um einen umgekehrten assignin-Befehl. Ich möchte einer neuen Variablen den Wert von -['R' num2str(z)]- aus dem darüber liegenden Programmteil zuweisen. Leider handelt es sich bei dieser Zuweisung (['R' num2str(z)]) aber um ein String, dem nicht der gleichnamige double-Wert zugeordnet wird.

Schon einmal vielen Dank für eure Anregungen und Ideen.

Viele Grüße
Bella
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 23.351
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.07.2021, 20:48     Titel:
  Antworten mit Zitat      
Hallo,

dynamische Variablennamen sind sehr mühsam. Du kannst das zwar mit eval hinbekommen, ich würde stattdessen aber zur Verwendung von Cell Arrays raten. Zuweisung und Abfrage z.B. mit
Code:


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 ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.