>> classdef MyTestObj >> properties >> Data = ; >> end; >> >> methods >> function obj=MyTestObj(M) >> obj.Data = M; >> end; >> function obj = UpdateData(obj) >> obj.Data = obj.Data+1; >> end; >> end; >> end;
To create an Object instance I do: >> obj=MyTestObj([1,2,3,4]); Then, to add the value '1', I have to do: >> obj = UpdateData(obj); However, I'd like to use >> UpdateData(obj); and that the value of obj.Data is increased.
Is that possible? And how?
Many thanks in advance.
"Steven_Lord" <firstname.lastname@example.org> wrote in message <email@example.com>... > > > "kees de Kapper" <firstname.lastname@example.org> wrote in message > news:email@example.com... > > Hi Folks, > > I've got trouble with updating the input data (variables) of a function > > which is part of a struct. > > > > In an matlab-file MyFunc.m I have defined the following two functions: > >> function varargout = MyFunc(varargin) > >> TmpStruct.Data = ; > >> TmpStruct.Size = @(DataDimension)GetDataSize(DataDimension, > >> TmpStruct.Data); > > This makes a COPY of TmpStruct.Data. > > >> function SizeOut = GetDataSize(DataDimension, Data) > >> SizeOut = size(Data, DataDimension); > > > > If I now do: > >> TmpS = MyFunc(); > >> TmpS.Data = ones(20,30,40); > >> TmpS.Size(1) > > I would like to obtain the value '20', however I retrieve '0' since > > 'TmpStruct.Data' was defined empty before the function declaration. How > > could I "update" the input data/variable? > > As written, you'd need to recreate the anonymous function. > > http://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html#f4-71621 > > "To supply different values for the coefficients, you must create a new > function handle:" > > Since your next message said that you were switching your MyFunc function to > be an object instead, you could do this using dependent properties or a size > method on your object. > > -- > Steve Lord > firstname.lastname@example.org > To contact Technical Support use the Contact Us link on > http://www.mathworks.com