[Scilab-users] varargout doubt

Stéphane Mottelet stephane.mottelet at utc.fr
Tue Nov 8 18:02:46 CET 2016


Hello,

The assignments have to be made to individual terms of varargout :

function varargout=test(n)
   for i=1:n
     varargout(i)=i
   end
endfunction

-->[a,b]=test(2)
  b  =

     2.
  a  =

     1.

-->[a,b,c]=test(3)
  c  =

     3.
  b  =

     2.
  a  =

     1.

S.


Le 08/11/2016 à 17:08, Rafael Guerra a écrit :
> Please check the two examples here below:
>
> ///// START OF CODE
> clear;
> x=[1 2 3;4 5 6];
> y=[4 5 6;7 8 9];
> z=10;
> M=list(x,y,z);
>
> function out_list=func1(M) //ex.1
>      n = length(M);   // decide the number of variables to output based on function input
>      out_list = list(1:n);
>      for i=1:n
>          out_list(i)=rand(M(i));
>      end
> endfunction
>
> function out_list=func2(x,n)  //ex.2
>      out_list = list(1:n);
>      for i=1:n
>          out_list(i)=x.^i;
>      end
> endfunction
>
> Q = func1(M);   // Q is a list with same size as input M
> n = 5;
> P = func2(x,n); // P is a list of matrices with P(i) = X^i, i=1..n
> ///// END OF CODE
>
> Rgds,
> Rafael
>
> -----Original Message-----
> From: users [mailto:users-bounces at lists.scilab.org] On Behalf Of shamikam
> Sent: Tuesday, November 08, 2016 3:28 PM
> To: users at lists.scilab.org
> Subject: Re: [Scilab-users] varargout doubt
>
> Thanks for your reply but that didn't work. I would like to illustrate with a
> simple example-
>
> function varargout_list=exampl()
>      [lhs,rhs]=argn(0);
>      varargout_list = list(1:lhs);
>      for i=1:lhs
>          varargout_list(i)=list(ex())
>      end
>      
> endfunction
>
> function [x,y,z]=ex()
>      x=[1 2 3;4 5 6];
>      y=[4 5 6;7 8 9];
>      z=10;
> endfunction
>
> exampl() calls ex(). If I call exampl() with more than one o/p argument,
> there is an error
>
> -->[c,d,e]=exampl()
>                   !--error 59
> Wrong number of output arguments.
>   
>   
> -->[c,d]=exampl()
>                 !--error 59
> Wrong number of output arguments.
>   
>   
> -->c=exampl()
>   c  =
>   
>   
>         c(1)
>   
>      1.    2.    3.
>      4.    5.    6.
>
> If I change varargout_list to varargout like this
>
> function varargout=exampl()
>      varargout=list(ex())
> endfunction
>
> and call exampl(), I get the following errors-
>
> -->[c,d,e]=exampl()
>   !--error 21
> Invalid index.
>
> -->[c,d]=exampl()
>   !--error 21
> Invalid index.
>
> -->c=exampl()
>   c  =
>   
>      1.    2.    3.
>      4.    5.    6.
>
>
> How can I get varargout to work for any number of o/p arguments?
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users




More information about the users mailing list