|
|
Struct im base Workspace über eine Funktion bearbeiten |
|
ElMariachi |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 17.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.11.2009, 16:13
Titel: Struct im base Workspace über eine Funktion bearbeiten
|
 |
Hallo,
ich habe einen Workspace in dem sich ein struct (global) mit vielen Daten befindet. Dieses struct möchte ich über eine Function M-File editieren.
Problem ist nun, wenn ich innerhalb meiner Funktion MDL.Struct.Beispiel=7; setze, dann bleibt diese Definition innerhalb der Funktion und wird nicht im Workspace geändert.
Ich müsste irgendwie der Funktion das struct übergeben, ändern und wieder ausgeben. Eine andere Möglichkeit wäre, wenn ich den Befehl MDL.Struct.Beispiel=7; irgendwie an meinen Workspace übergeben könnte. Als dritte Möglichkeit habe ich versucht, aus meiner Function File ein M-File auszuführen, indem sich dann die obige Definition befindet, was aber auch nicht an meinen base workspace übergeben wird.
Hat jemand ne idee?
|
|
|
|
|
MarcelG |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 21.10.09
|
 |
|
 |
Wohnort: Waltrop
|
 |
|
 |
Version: R2009a
|
 |
|
|
 |
|
Verfasst am: 17.11.2009, 16:31
Titel: Re: Struct im base Workspace über eine Funktion bearbeiten
|
 |
Hallo,
ich bin selbst noch zu neu in MATLAB, um zu wissen, wie die internen Dinge so ablaufen. Ich würde aber behaupten, dass - wie es bei anderen Sprachen auch geschieht - bei der Übergabe einer Variablen an eine Funktion (als Inputparameter) in der Funktion eine Kopie dieser Variablen angelegt wird, auf der man dann letztlich herumreitet. Daher bleibt das Original augenscheinlich unverändert.
Es bietet sich nun an, diese Kopie dann am Ende der Funktion entweder als Outputparameter zurückzugeben, oder sie via assignin in den Workspace zurückzuschreiben.
Ich hoffe, das hilft dir weiter. Gruß,
MarcelG
_________________
{brigens ist ein Kezboard/Treiber v;llig [berfl[ssig!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.11.2009, 16:40
Titel:
|
 |
Hallo,
der fehlende Punkt dürfte sein, dass die Variable auch innerhalb der Funktion als global definiert sein muss. Z.B.:
wobei
Das ist allerdings NICHT die beste Vorgehensweise. Man sollte immer versuchen, ohne global auszukommen. Besser wäre:
wobei
Grüße,
Harald
|
|
|
ElMariachi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 17.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 11:44
Titel:
|
 |
Marcel, das Problem ist, dass man structs glaub ich nicht so einfach an Funktionen übergeben kann, auch der assignin Befehl funktioniert bei structs nicht.
Harald, ich hatte global s.vor probiert was nicht funktioniert hat. Jetzt gehts, wenn man das komplette struct als global definiert. Vielen Dank!
|
|
|
|
|
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.
|
|