So ändern Sie die Eigenschaften eines Matlab-Objekts
Habe ich einen MATLAB-Klasse, so etwas wie:
classdef myclass
properties
x_array = [];
end
methods
function increment(obj,value)
obj.x_array = [obj.x_array ; value);
end
end
end
Das problem ist, das Eigentum x_array
nie geändert, wenn ich rufe die increment()
Funktion:
ex:
>>s = myclass
>>increment(s,5)
>>s.x_array
ans = []
Habe ich einige der Forschung, und ich erreichte ein Ergebnis, dass dies ist, weil MATLAB mit Lazy Kopie für Objekte, meine Klasse Erben der GRIFF-Klasse haben sollte das Problem gelöst, hat es aber nicht, weiß jemand warum dies passiert ist? Und wenn die Erweiterung der Griff Klasse ist indeen die Lösung, dies ist nicht der richtige Weg, es zu tun:
classdef myclass < handle
oder gibt es irgendwelche zusätzlichen Schritte?
Kommentar zu dem Problem
fast ein Duplikat zu stackoverflow.com/questions/209005/...
InformationsquelleAutor der Frage user34830 | 2008-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ähnlich zu diese Frage. Kurz gesagt, alle sollten Sie tun müssen, ist, Erben von der handle-Klasse.
Kurzes Beispiel
Inhalt der Datei myclass.m
Nun aus der Matlab-Eingabeaufforderung, können Sie das folgende tun
InformationsquelleAutor der Antwort Azim
Gibt es einen einfacheren Weg. Sie brauchen nur zu überschreiben die erste Instanz
s
wie folgt:Mehr Informationen finden Sie hier:
http://uk.mathworks.com/help/matlab/matlab_oop/matlab-vs-other-oo-languages.html#bslvcv1
PS: Während es in Ordnung zu verwenden Griff, die Art, wie die kopieren-Funktion arbeitet, ist anders und Sie sollten vorsichtig sein, über die Art und Weise Sie es verwenden. Wenn Sie Griff, in der Tat, Sie machen eine neue Adresse/Referenz auf eine obj
InformationsquelleAutor der Antwort Meisam Jalalvand