On 14.09.2012, at 15:46, Jordi Gutiérrez Hermoso <jord...@octave.org> wrote:
> On 14 September 2012 09:30, Lukas Reichlin > <lukas.reichlin.li...@gmail.com> 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 ------------------------------------------------------------------------------ How fast is your code? 3 out of 4 devs don\\\'t know how their code performs in production. Find out how slow your code is with AppDynamics Lite. http://ad.doubleclick.net/clk;262219672;13503038;z? http://info.appdynamics.com/FreeJavaPerformanceDownload.html _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev