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

Übergabe von Variablen zwischen Skript und functionfiles

 

Jochen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2008, 14:15     Titel: Übergabe von Variablen zwischen Skript und functionfiles
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 20.01.2008, 17:14     Titel:
  Antworten mit Zitat      
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
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 - 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.