The Math Forum

Search All of the Math Forum:

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

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

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

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 ]
Steven Lord

Posts: 18,038
Registered: 12/7/04
Re: Updating variables in declared function handles
Posted: Mar 13, 2013 9:31 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"kees de Kapper" <> wrote in message
> 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.

"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
To contact Technical Support use the Contact Us link on

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

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.