<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hi Samuel,<br>
      <br>
      Thanks for your fast and pertinent answer.<br>
      However, it does not work really well for what I try to do.<br>
      Indeed, I would like to use<br>
      <br>
      f=[c,s]<br>
      <br>
      as a normal function that is being able to call something like
      f(x)=[c(x),s(x)];<br>
      I assume that all the functions f,c and s share the same input
      arguments.<br>
      With your solution, it could work if I could call "L(:)(x)":<br>
      <br>
      L=[cos sin];<br>
      L(1)(%pi)<br>
       ans  =<br>
       <br>
        - 1. <br>
      <br>
      L(2)(%pi)<br>
       ans  =<br>
       <br>
          1.225D-16  <br>
      <br>
      //What I would like:<br>
      <br>
      L(:)(%pi) //not implemented in scilab<br>
       ans_I_am_dreaming_about =<br>
          - 1.    1.225D-16 <br>
      <br>
      The ultimate goal here is to build something that I could
      manipulate like a matrix with a "*" operator that mimic what
      happens with a normal matrix:<br>
      <br>
      L=[a b ; c d];<br>
      M=[e f; g h];<br>
      N=L*M==[a*e+b*g, a*f+b*h ; c*e+d*g, c*f+d*h];<br>
      and<br>
      N(x)==[a(x)*e(x)+b(x)*g(x), a(x)*f(x)+b(x)*h(x) ;
      c(x)*e(x)+d(x)*g(x), c(x)*f(x)+d(x)*h(x)];<br>
      <br>
      I am not sure this can be done in scilab...<br>
      <br>
      Cheers,<br>
      <br>
      Antoine<br>
      <br>
      <br>
      On 28/11/2012 22:54, Samuel Gougeon wrote:<br>
    </div>
    <blockquote cite="mid:50B68812.9030304@free.fr" type="cite">
      <meta http-equiv="Context-Type" content="text/html;
        charset=ISO-8859-1">
      <div class="moz-cite-prefix">Hello Antoine,<br>
        Le 28/11/2012 21:44, Antoine Monmayrant a écrit :<br>
      </div>
      <blockquote cite="mid:2d3b-50b67780-31-41190480@130597042"
        type="cite">
        <pre wrap="">.../...

I tried to play with %fptr_c_fptr but without success.</pre>
      </blockquote>
      It could depend on the container you choose. The following works
      well:<br>
      <pre><big><span>function</span> <span>r </span><span>= </span><span>%fptr_c_fptr</span><span>(</span><span>f</span><span>, </span><span>g</span><span>)</span>
    <span>r</span> <span>=</span> <span>tlist</span><span>(</span><span>[</span><span>"</span><span>fptrL</span><span>"</span><span>]</span><span>,</span> <span>f</span><span>,</span> <span>g</span><span>)</span>
<span>endfunction</span>
<span>// ----------------------------------</span>
<span>function</span> <span>r</span><span> = </span><span>%fptrL_c_fptr</span><span>(</span><span>L</span><span>, </span><span>f</span><span>)</span>
    <span>r</span> <span>=</span> <span>tlist</span><span>(</span><span>[</span><span>"</span><span>fptrL</span><span>"</span><span>]</span><span>,</span> <span>L</span><span>(</span><span>2</span><span>:</span><span>$</span><span>)</span><span>,</span> <span>f</span><span>)</span>
</big><span><big>endfunction

-->L = [ disp disp disp]
 L  =
       L(1)
 fptrL   
       L(2)
       L(3)
       L(4)
 </big>
</span></pre>
      or<br>
      <pre><big><span>function</span> <span>r</span><span>=</span><span>%fptr_c_fptr</span><span>(</span><span>f</span><span>, </span><span>g</span><span>)</span>
    <span>r</span> <span>=</span> <span>list</span><span>(</span><span>f</span><span>,</span> <span>g</span><span>)</span>
<span>endfunction</span>
<span>// ----------------------------------</span>
<span>function</span> <span>r</span><span>=</span><span>%l_c_fptr</span><span>(</span><span>L</span><span>, </span><span>f</span><span>)</span>
    <span>r</span> <span>=</span> <span>list</span><span>(</span><span>L</span><span>(</span><span>:</span><span>)</span><span>,</span> <span>f</span><span>)</span>
<span>endfunction

-->L = [ disp disp disp]
 L  =
       L(1)
       L(2)
       L(3)
</span></big><big>
or</big>

<span></span><big><span>function</span> <span>r</span><span>=</span><span>%fptr_c_fptr</span><span>(</span><span>f</span><span>, </span><span>g</span><span>)</span>
    <span>c</span> <span>=</span> <span>cell</span><span>(</span><span>1</span><span>,</span><span>2</span><span>)</span>
    <span>c</span><span>(</span><span>1</span><span>)</span><span>.</span><span>entries</span> <span>=</span> <span>f</span>
    <span>c</span><span>(</span><span>2</span><span>)</span><span>.</span><span>entries</span> <span>=</span> <span>g</span>
    <span>r</span> <span>=</span> <span>tlist</span><span>(</span><span>"</span><span>fptrL</span><span>"</span><span>,</span><span>c</span><span>)</span>
<span>endfunction</span>
<span>// ----------------------------------</span>
<span>function</span> <span>r</span><span>=</span><span>%fptrL_c_fptr</span><span>(</span><span>L</span><span>, </span><span>f</span><span>)</span>
    <span>c</span> <span>=</span> <span>L</span><span>(</span><span>2</span><span>)</span>
    <span>d</span> <span>=</span> <span>c</span><span>.</span><span>dims</span>
    <span>d</span><span>(</span><span>2</span><span>)</span> <span>=</span> <span>int32</span><span>(</span><span>d</span><span>(</span><span>2</span><span>)</span><span>*</span><span>1.</span> <span>+</span><span>1</span><span>)</span>
    <span>setfield</span><span>(</span><span>2</span><span>,</span> <span>d</span><span>,</span> <span>c</span><span>)</span>
    <span>L2</span> <span>=</span> <span>getfield</span><span>(</span><span>3</span><span>,</span><span>c</span><span>)</span> <span>// entries</span>
    <span>L2</span><span>(</span><span>$</span><span>+</span><span>1</span><span>)</span> <span>=</span> <span>f</span>
    <span>setfield</span><span>(</span><span>3</span><span>,</span><span>L2</span><span>,</span><span>c</span><span>)</span>
    <span>r</span> <span>=</span> <span>tlist</span><span>(</span><span>"</span><span>fptrL</span><span>"</span><span>,</span> <span>L2</span><span>)</span>
<span>endfunction</span></big>
</pre>
      -->L = [ disp rand diag ];<br>
       <br>
      -->L(2)(1)("Hello boy")<br>
       Hello boy   <br>
        <br>
      -->L(2)(2)(list(2,3))<br>
       ans  =<br>
          0.8497452    0.8782165    0.5608486  <br>
          0.6857310    0.0683740    0.6623569  <br>
       <br>
      -->L(2)(3)(1:4)<br>
       ans  =<br>
          1.    0.    0.    0.  <br>
          0.    2.    0.    0.  <br>
          0.    0.    3.    0.  <br>
          0.    0.    0.    4.  <br>
      <br>
      <br>
      you may also prefer using a structure array instead of a cell<br>
      as container. It should also work.<br>
      <br>
      Regards<br>
      Samuel<br>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
    </blockquote>
  </body>
</html>