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

Globale Variablen aus Cell array deklarieren

 

Huckle Berry
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2012, 20:26     Titel: Globale Variablen aus Cell array deklarieren
  Antworten mit Zitat      
Hallo,
ich bin noch nicht so erfahren in Matlab und habe ein Problem mit globalen Variablen. Ich habe in Fortran einige größere Datensätze (commons), möchte diese in Matlab übersetzen.

Ich möchte die Variablennamen in ein cellarray zusammenfassen, und die Deklaration global x1 x2 ... x20 verkürzen zu können, und zwar ungefähr so:

function [dingdong] = deklariereGlobal(cellarray)
for i = 1:length(cellarray)
b=char(cellarray(i))
eval(['global ' b]);
end
end

Im Hauptprogramm ist der Code ausführbar und alles OK, wenn ich aber in einer Unterfunktion die globalen Variablen deklarieren will, sind die entsprechenden Variablen unbekannt.
Vielen Dank im Voraus für eure Hilfe
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2012, 21:34     Titel:
  Antworten mit Zitat      
Hallo,

globale Variablen sind nicht empfehlenswert. Getoppt wird das eigentlich nur dadurch, dass du auch noch eval verwendest, um diese zu definieren.

MATLAB ist eine vektorisierte Sprache; man sollte also vektorwertige Variablen statt eine Serie durchnumerierter Variablen verwenden.

Um diesen Code überhaupt verstehen zu können, wäre wichtig zu wissen, was die Variable cellarray enthält.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Huckle Berry
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2012, 08:57     Titel:
  Antworten mit Zitat      
Hallo Harald,

entschuldige, wenn das unklar ausgedrückt war..
also das Cellarray enthält die Namen von Variablen, die ich global definieren möchte, es sind selber Vektoren verschiedener länge, (x1..x20 ist kein Vektor).
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2012, 09:06     Titel:
  Antworten mit Zitat      
Hallo,

die Frage ist, warum du überhaupt Variablen x1...x20 hast. Warum nicht ein Cell Array x, in das mit x{1}...x{20} geschrieben bzw. aus dem mit der gleichen Syntax gelesen werden kann?

Variablen sollten nach Möglichkeit übergeben werden anstatt global deklariert werden. Ich habe aber mal versucht, die Probleme mit deinem Code nachzuvollziehen, und es gelingt mir nicht. Es wäre also gut, wenn du ein Beispiel posten kannst, anhanddessen man das Problem reproduzieren kann.

Grüße,
Harald
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.