|
Zenon |
Forum-Guru
|
|
Beiträge: 292
|
|
|
|
Anmeldedatum: 20.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 12:21
Titel: Fehlersuche
|
|
Hallo,
ich mache irgendeinen dämlichen Fehler und dreh bald frei, weil ich ihn nicht finde...hier ist der Code...
Das befüllen klappt, das zuweisen klappt, das zuweisen in den base Workspace klappt...nur in handles ist das ding nicht aufzufinden...
Was mach ich hier falsch? Ich mache eigentlich alles so wie sonst auch...denke ich zumindest...
Danke schon mal...
|
|
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 06.04.2010, 12:48
Titel:
|
|
Also hier erkenne ich keinen Fehler,
womöglich überschreibst du einfach deine handles, (rufst das aus anderer Funktion aus? dann muss du diese aktualisieren)
|
|
|
Zenon |
Themenstarter
Forum-Guru
|
|
Beiträge: 292
|
|
|
|
Anmeldedatum: 20.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 13:18
Titel:
|
|
Du hast recht...das muss einem doch mal einer sagen...
Hatte in der OpeningFcn zwei Funktionen, die jeweils handles benötigt und ggf. Variablen reingeschrieben haben. und immer mit guidata geupdatet haben...und sich offensichtlich gegenseitig überschrieben haben...
Jetzt hab ich das Ganze so gelöst:
Vielen, vielen Dank Denny! Ich war wirklich am verzweifeln...ich habe handles wie eine Globale Variable behandelt...das konnte ja nicht gehen...
Könnte man auch einen CallByReference machen, sodass es ohne eine Rückgabe von handles klappt? (rein aus Interesse?
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 06.04.2010, 14:20
Titel:
|
|
|
|
|
Zenon hat Folgendes geschrieben: |
Könnte man auch einen CallByReference machen, sodass es ohne eine Rückgabe von handles klappt? (rein aus Interesse? |
CallbyReference, wie du es aus C++ oder Java kennst, ist unter Matlab nicht möglich.
Ich hatte mal so einen seltsamen Fall gehabt:
Ich musste Darstellung implementieren, wo meine Ausschnitte mal in Normierter Form dargestellt werden, mal in Original.
Also diese Darstellung Funktion übergibt Original Ausschnitte zum Normieren an andere Matlab-Funktion, in dieser Funktion werden die Bildchen weiter an eine Mex-Funktion gereicht, welche schließlich die Normierung durchgeführt hat.
Die Mex-Funktion hatte Call by Reference Verhalten und mein Original-Bildchen waren einfach weg aus Speicher => sie waren auch normiert.
Und zwar auch in allen Matlab Funktionen. Jede Matlab-Funktionen ist in eigenem M-File implementiert:
Behoben habe ich das dadurch, dass ich Kopie in Funktion, welche Mex-File aufruft, angelegt habe. Dabei muss eine Operation durchgeführt werden, damit eine Kopie angelegt wird:
Also daraus folgt dass Matlab bei Übergabe zuerst Referenzen von Variablen übergibt, erst wenn die Übergabe-Variablen in anderer Matlab-Funktion manipuliert werden, dann legt Matlab automatisch Kopie in Speicher an.
Deswegen kannst du unter Matlab die Änderungen nur durch Rückgabeparameter bemerkbar machen.
handles = my_function(handles)
|
|
|
Zenon |
Themenstarter
Forum-Guru
|
|
Beiträge: 292
|
|
|
|
Anmeldedatum: 20.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 14:27
Titel:
|
|
Danke für die ausführliche Antwort...das wäre dann wohl geklärt
|
|
|
|
|
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.
|
|