Ich habe eine GUI in MATLAB GUIDE entwickelt. Was ist der beste Weg, um Daten von einer externen Funktion oder Klasse für von GUIDE erstellte Funktionen verfügbar zu machen?So übergeben Sie die Variable an eine Funktion, die mit dem Guide erstellt wurde
Antwort
Ich habe keine Ahnung, was Sie genau tun wollen, aber Sie können wahrscheinlich die Userdata Eigenschaft Wert verwenden:
Passing somevar wenn das Formular myfig öffnen:
h = myfig('UserData', somevar);
oder später:
h = myfig();
[...]
set(h, 'UserData', somevar);
In der Figur Sie die Immobilie mit zugreifen:
function some_Callback(hObject, eventdata, handles)
somevar = get(hObject, 'UserData');
Die von ymihere gelieferten Links sehr hilfreich aussehen. Darüber hinaus werden einige der Optionen (verschachtelte Funktionen und GUIDATA), die in diesen Links behandelt werden, in einem anderen Beitrag auf SO behandelt: How to create a GUI inside a function in MATLAB? Es gibt ein paar Beispiele dort, wie der Code für jeden Fall aussieht.
Ich bin persönlich teilweise verschachtelte Funktionen, da ich glaube, dass es in den meisten Fällen einen kürzeren, saubereren Code erzeugt. Es ist jedoch wahrscheinlich die schwierigere Methode zum Freigeben von Anwendungsdaten, wenn Sie ein neuer MATLAB-Benutzer sind (es kann etwas gewöhnungsbedürftig sein). Die einfachste Option für Sie könnte sein, die Eigenschaft 'UserData' beim Aufruf Ihrer Funktion zu setzen (wie von ymihere vorgeschlagen). Wenn Sie Ihr GUIDE GUI "myGUI.m" gespeichert, dann würden Sie rufen:
>> hGUI = myGUI('UserData','hello');
wo hGUI ein Handle auf Ihrem GUI-Objekt ist. Sie können dann die ‚Userdata‘ Eigenschaft erhalten, um zu sehen, dass es die Zeichenfolge ‚Hallo‘ enthält:
>> get(hGUI,'UserData')
ans =
hello
statt ‚Hallo‘, können Sie alles, was Sie setzen wollen, wie eine Struktur von Daten. Sie sollten innerhalb der Rückrufe Ihrer GUIDE m-Datei auf das Feld 'UserData' der Figur zugreifen können. Sie müssen das Zahlen-Handle aus dem Handles Argument an Ihre Rückrufe übergeben.
EDIT: Ein Nachteil der ‚Userdata‘ Eigenschaft zu verwenden, oder einige der anderen Methoden, die Daten an ein Objekt anhängen ist, dass die Daten zufällig sein könnte (oder absichtlich) überschrieben oder auf andere Weise vom Benutzer beschädigt oder andere Anwendungen. Der Vorteil der Verwendung verschachtelter Funktionen für die gemeinsame Nutzung von Daten zwischen Ihren GUI-Callbacks besteht darin, dass der Code von allem isoliert ist, was der Benutzer oder eine andere Anwendung tun könnte. Umgekehrt kann die Verwendung von global variables ziemlich gefährlich sein.