|
|
Variablen aus Workspace als Konstante in Function schreiben |
|
Bibonaut |

Forum-Fortgeschrittener
|
 |
Beiträge: 60
|
 |
|
 |
Anmeldedatum: 06.06.13
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: 2013a
|
 |
|
|
 |
|
Verfasst am: 22.06.2013, 16:51
Titel: Variablen aus Workspace als Konstante in Function schreiben
|
 |
Hallo,
ich glaube das erste Mal, dass ich keine Antwort im Netz gefunden habe.
Ich möchte mir eine Matlab-Function erstellen, die konstante Werte verwendet, welche ich vorher berechnet habe. Gibt es eine Möglichkeit, diese in der Form "Konstante = 644065406" bequem in das Function-File zu schreiben?
Ich weiß nur, dass manche Toolboxen sowas können
Ich könnte es mit den üblichen Mitteln wie fwrite etc. machen, aber vielleicht gibts ja noch was für faule Menschen?
P.S.: Ich bräuchte das Ganze nur ein Mal. Es sind auch nur ein ganz paar Werte, die ich auch kopieren und einfügen kann. Deswegen nicht zu viel Aufwand betreiben... mich interessiert nur, ob es generell eine einfache Möglichkeit gibt
Vielen Danke schon Mal für interessante Antworten!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 22.06.2013, 23:27
Titel: Re: Variablen aus Workspace als Konstante in Function schrei
|
 |
|
 |
|
Hallo Bibonaut,
Ich verstehe die Frage nicht.
Du möchtest "Konstante = 644065406" in ein M-File schreiben. Aber warum machst Du das dann nicht einfach im Editor?
Ich kenne keine Toolbox, die automatisch Source-Code verändern kann. Das würde mich auch wundern, denn eigentlich ist dies ein typisches Anti-Pattern, also eine Programmier-Methode, die mehr Schwierigkeiten macht als löst. Generell ist es besser, alle Konstanten, die nicht wirklich Konstant sind sondern von externen Funktionen berechnet werden, auch ausserhalb des Sourcecodes zu speichern, z.B. als MAT file. Dazu gehören z.B. auch Icons, Sounds, etc.
Aber wie immer gibt es auch Ausnahmen. Woher könnte denn ein automatisches Einfüge-Programm wissen, in welcher Zeile die Konstante eingefügt werden soll?
Ich verwende ein Programm, das in allen meinen M-Files nach einem bestimmten Kommentar sucht und den Wert davor in Klammern oder in Quotes ersetzt. Z.B.:
Das ist nützlich, wenn ich ein größeres Programm an verschiedene Labors ausliefere, die unterschiedliche Parameter verwenden, z.B. in mm statt m messen.
Nun ist das Programm umfangreich und das es automatisch Sourcecode verändert ausgesprochen tückisch. Zu leicht könnte ein Bug darin Fehler in den Code schmuggeln. Deshalb wird vorher getestet, ob es ein aktuelles Backup vom M-File gibt, die Änderungen werden mit Datum protokolliert, und die Funktionen müssen hinterher einen Unit-Test durchlaufen. Das klingt etwas paranoid. Aber es geht um Programme mit mehr als 200'000 Zeilen Source-Code und da wird die Qualitätskontrolle sehr wichtig. Dann wird auch klar, warum ich geänderte Parameter nicht mal eben von Hand im Editor ändere: Zu groß ist die Gefahr, dass ich doch das eine oder andere File vergessen habe.
Gruß, Jan
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 23.06.2013, 07:50
Titel:
|
 |
Guten Morgen,
Jans Anmerkungen bzgl. der Fehlerproblematik sind sicherlich berechetigt, aber ich kenne durchaus Anwendungsfälle, wo m-files entsprechend Automatisiert aufgebaut werden. Wenn, wie du schreibst es nur einmalig geschieht und es gut Dokumentiert ist, sollten sich diese Probleme in Grenzen halten.
Eine Variante, wenn es schon ein bestehendes m-file ist, ist, in das m-file ein Schlüsselwort einzubauen. Sollte natürlich etwas umfangreicheres sein.
Z.B.
Das m-file wird dann gesamt eingelesen.
Dann wird nach dem gesamten String "Start automatisierter Code " & "Ende automatisierter Code" gesucht und dazwischen der zu ergänzende Code geschrieben, alles wieder in die Datei schreiben. Fertig.
Aber das lohnt eigentlich nur, wenn es umfangreicherer, automatisch erzeugter Code ist, der nach Nutzereingabe dort hin muss.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
|
|
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 - 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.
|
|