Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Updating variables in declared function handles
Replies: 7   Last Post: Mar 15, 2013 9:24 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
kees de kapper

Posts: 71
Registered: 12/7/04
Re: Updating variables in declared function handles
Posted: Mar 14, 2013 11:23 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Thank you Steven!

I process brings up another question.

This is my Object defenition:

>> 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.

Kind regards,

Kees


"Steven_Lord" <slord@mathworks.com> wrote in message <khpv3e$o46$1@newscl01ah.mathworks.com>...
>
>
> "kees de Kapper" <kees_de_kapper@hotmail.com> wrote in message
> news:khp1t7$3gv$1@newscl01ah.mathworks.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
> slord@mathworks.com
> To contact Technical Support use the Contact Us link on
> http://www.mathworks.com




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.