|
Duvodas |
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 26.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.09.2009, 16:13
Titel: Modul für Konstanten?
|
|
|
|
|
Hallo,
ich bin nun schon seit einiger Zeit auf der Suche nach etwas Vergleichbarem zu den Modulen, wie ich sie aus Fortran kenne.
Diese Module enthalten häufig verwendete Konstanten und Initialisierungen von Variablen. Wenn diese in mehreren Funktionen benötigten werden, erspart es nicht nur viel Code, es gibt auch noch weitere Vorteile: Bei einer Änderung müssen die Konstanten z.B. nur noch im Modul geändert werden.
Wie lassen sich solche Module eurer Meinung nach am besten in MatLab realisieren, oder gibt es gar solch Module, die ich bisher übersehen habe?
Bis jetzt habe ich mit globalen Variablen gearbeitet. Das ist mir auf Dauer aber nicht praktisch genug, da stets markiert werden muss, dass die Variablen global sind.
Vor kurzem kam mir noch der Gedanke, dass man mit den "Strukturen" arbeiten könnte, die diesen Punkt enthalten. (Wie nennt man diese eigentlich? Die Variablen mit den geschweiften Klammern sind ja auch Strukturen) Die Berechnung von a*b mit Werten aus einem "Modul" würde dann so aussehen:
Kennt jemand von euch noch eine andere Möglichkeit?
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 16.09.2009, 18:06
Titel:
|
|
Die meisten Nutzer haben ein Initialisierungsskript das üblicher Weise auch so ähnlich wie param_init.m heisst. Alle Variablenzuweisungen sind dann im MATLAB Base-Workspace und können aus anderen M-Skripten genutzt werden.
Andreas
|
|
|
Duvodas |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 26.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2009, 12:29
Titel:
|
|
Und wie sieht solch ein Initialisierungsskript üblicherweise aus? Wie erreiche ich, dass die Variablen allen Funktionen zur Verfügung stehen?
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 17.09.2009, 21:44
Titel:
|
|
Ich vermute, dass die Einfachheit von MATLAB hier zu verblüffend ist um drauf zu kommen. Beispiel:
param_int.m:
Dann brot.m
auto.m greift auf den gleichen Parameter zu. Er ist einfach da!
Wenn brot und auto aber nun unbedingt Funktionen sein müssen, sollten etwender die Parameter mit dem Funktionsaufruf übergeben werden, oder (ich mag das nicht so) als GLOBAL definiert werden.
Andreas
|
|
|
Duvodas |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 26.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.09.2009, 13:24
Titel:
|
|
Ah danke, mir war bisher gar nicht so bewusst, dass man ein Skript auch innerhalb eines Skripts ausführen kann, und dass diesem dann die Variablen zur Verfügung stehen. Bisher habe ich immer nur mit einem Skript und vielen Funktionen gearbeitet. Gibt es etwas, was dagegen spricht, bzw. nicht so optimal ist?
Ich denke, ich werde nicht komplett auf Funktionen verzichten. Um die Parameter beim Funktionsaufruf zu übergeben, sind es einfach zu viele (vor allem bei sehr vielen ineinander verschachtelten Funktionen). Die Paramater als global zu definieren ist wie gesagt zu umständlich.
Gibt es keine andere Möglichkeit?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.448
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.09.2009, 15:22
Titel:
|
|
Hallo,
Es ist sicher eine gute Idee, mit Funktionen zu arbeiten. Beim Arbeiten mit Skripten besteht die Gefahr, dass man sich (evtl. auch unabsichtlich) Variablen überschreibt.
Zum Übergeben von Parametern würden sich, wie von dir ja auch schon angesprochen, Strukturen eignen (mit . Notation).
Eine weitere Alternative wären .mat - Dateien. Um das ständige Laden zu vermeiden, dann statische ("persistent") Variablen verwenden. Da muss man aber aufpassen, wenn die Parameter später upgedatet werden sollen.
Anmerkung: das mit den geschweiften Klammern sind keine Strukturen, sondern Zellarrays.
Grüße,
Harald
|
|
|
Duvodas |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 26.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.09.2009, 12:42
Titel:
|
|
Dann werde ich nun erstmal mit einer Funktion arbeiten, die eine Struktur mit allen in meinem Programm enthaltenen Parametern enthält. Diese Funktion werde ich dann in allen Funktionen meines Programms aufrufen und die Parameter stehen mir dadurch dort zur Verfügung.
Ich mag es einfach nicht, wenn in einem größeren Programm Parameter einfach als Zahlen eingesetzt werden. Ein übersichtliches File mit allen Werten ist viel praktischer.
Vielen Dank für die Hilfe!
Falls dennoch jemand eine andere Möglichkeit kennt, her damit
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|