help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [OctDev] inputname and function(cell{:})


From: Lukas Reichlin
Subject: Re: [OctDev] inputname and function(cell{:})
Date: Sat, 15 Sep 2012 09:53:44 +0200

On 14.09.2012, at 15:46, Jordi Gutiérrez Hermoso <address@hidden> wrote:

> On 14 September 2012 09:30, Lukas Reichlin
> <address@hidden> wrote:
>> Currently, with
>> 
>>        ret1 = testfun (arg1, arg2, arg3)
>> 
>> nargin is 3 and inputname ranges from 1 to 3.
>> But with
>> 
>>        ret2 = testfun (args{:})
>> 
>> nargin is still 3 but only inputname(1) exists while inputname(2)
>> and inputname(3) give errors.
> 
> But if you're passing a cs-list, the cs-list itself doesn't have the
> variable names that you want, and inputname is working as documented,
> returning an empty string.
> 
>> Therefore I must find an alternative to inputname or an alternative
>> to nargin which counts input arguments the same way as inputname
>> does. Do you know how to circumvent this problem?
> 
> What exactly is your actual problem? nargin still counts arguments,
> but why do you want to know what the variables are called in the
> calling function? The calling function doesn't have this information
> when you use a cs-list. To me this seems like premature closure or an
> X-Y problem:
> 
>    http://www.perlmonks.org/index.pl?node_id=542341
> 
> Can you give broader context in order to be able to give you a better
> answer? There may be a completely differenty way to solve your broader
> problem.
> 
> - Jordi G. H.

Hi Jordi

Thanks for your quick reply! The broader context is given on line 92 of 
MDSSystem2.m [1]

        bode (G_per{:}, w)

G_per is a cell of LTI models to be plotted by bode. The bode function 
generates an automatic legend with the argument names given by the inputname 
function. On line 91 in bode.m [2]

        legend_args{k} = inputname(sys_idx(k));  # watch out for bode 
(lticell{:})

I'm trying to get the argument names. However, only inputname(1) and 
inputname(2) work because bode (G_per{:}, w) has only two arguments. But since 
G_per contains about a dozen LTI systems, nargin = numel (G_per) + 1 (+1 
because of argument w). Here inputname(n) for n>2 is failing. Therefore I need 
a way to find out how many inputnames were given (nargin doesn't work) so I can 
stop before inputname(n) fails. (counting the inputs like inputname, instead of 
a try-catch block)

Best regards,
Lukas


[1] MDSSystem2.m
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/devel/MDSSystem2.m?revision=11015&view=markup


[2] bode.m
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/inst/bode.m?revision=11025&view=markup





reply via email to

[Prev in Thread] Current Thread [Next in Thread]