|
|
Übergabe von Variablen zwischen Skript und functionfiles |
|
Jochen |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.01.2008, 13:15
Titel: Übergabe von Variablen zwischen Skript und functionfiles
|
|
|
|
|
hi, ich habe folgendes Problem. Im Rahmen einer Hausarbeit sollen wir einen unbestimmten Körper plotten lassen und den Schwerpunkt sowie das Flächenträgheitsmoment berechnen. Nun kann man das ja nur schwer in einer m-file realisieren, da ja irgendwann die Vraiblen erschöpft sind und es zur Doppelbelegung kommen würde. Darum wollte ich die Berechnung (Schwerpunkt und Flächenträgheit) extrahieren und die Ergebnisse daraus nur noch an einen "main" m-file übergeben. Diese Übergabe zwischen meinen bislang beiden Dateien versuchte ich mit dem Befehl function an eine Skriptdatei zu bewerkstelligen. Bisher hab ich es jedoch nicht hinbekommen. Was ich bisher gemacht habe:
1.Datei: main
global A B Z g m
dort befinden sich die Matrizen A B und die skalare g m (Eingabegrößen vom Benutzer)
In dieser datei befinden sich auch sämtliche angaben zum plotten des Körpers (funtioniert)
2.Datei: Schwerpunkt
function Z=Schwerpunkt (A,B,g,m)
global A B Z g m
Z=5;
diese 5 hat keinen tieferen Sinn außer zu testen ob die Übergabe funktioniert.
Nun meine Frage. Macht es Sinn das Ganze über "function" machen zu wollen oder gibt es da eine geschicktere Lösung. Falls es Sinn macht wäre ich über Hinweise über etwaiige Fehler dankbar. Bisher klappt die Übergabe nämlich nicht.
Dankeschön
Jochen[b][/b]
|
|
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 20.01.2008, 16:14
Titel:
|
|
|
|
|
Ich würde Dich abraten irgendwelche Berechnungen in einem Script abzuarbeiten und das aus folgenden Gründen:
1. ein Script benutzt den Speicherbereich von Base Workspace, d.h. Du operierst am offenem Herz.
2. Scripte werden langsamer ausgeführt als Funktionen, da der MATLAB interner JIT Accelerator nur(!) bei Funktionen eingeschaltet wird.
GLOBAL ist zwar recht nette Sache, jedoch ist in meinen Augen wie ein GOTO Befehl zu C64 Basic Zeiten. Benutze es als schnelle Lösung, jedoch baue darauf nicht von Grund auf.
Wenn es zuviele Variablen sind, die ständig von Funktion zu Funktion übergeben werden müssen, dann fasse diese zusammen, zB. als Arrays, CellArrays, oder Strukturen mit Unterfeldern.
Weitere wichtiger Stichpunkt wäre der Einsatz von "Nested Functions" (also verschachtelte Funktionen) Im folgendem Beispiel ist die Funktion APLUSB eine "Nested Function" und hat den Zugriff auf den Workspace Bereich der Hauptfunktion, d.h. "a" und "b" müssen nicht explizit übergeben werden.
====
function aaa
a = 5
b = 10
c = aplusb
function c = aplusb
c = a+b
end
end
====
Nested Funktions können jedoch nicht(!) in einen externen M-File ausgelagert werden.
MfG
|
|
|
|
|
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.
|
|