<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Le 24/04/2015 14:50, Stéphane Mottelet
      a écrit :<br>
    </div>
    <blockquote cite="mid:B13FDE21-0CA8-4F8A-8B9B-73E221C3546D@utc.fr"
      type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <div>Hello Antoine </div>
      <div><br>
      </div>
      <div>I think your idea is excellent in my context, I Will try it
        and keep you informed of the actual improvement,</div>
      <div><br>
      </div>
      <div>S.</div>
      <div><br>
        Le 24 avr. 2015 à 13:31, Antoine Monmayrant <<a
          moz-do-not-send="true"
          href="mailto:antoine.monmayrant@laas.fr">antoine.monmayrant@laas.fr</a>>
        a écrit :<br>
        <br>
      </div>
      <blockquote type="cite">
        <div>
          <meta content="text/html; charset=ISO-8859-1"
            http-equiv="Content-Type">
          <div class="moz-cite-prefix">Hi again,<br>
            <br>
            Another way you might improve your code: can you write it as
            a matrix-vector product?<br>
            Like<br>
            <br>
            M1_v=A*v; <br>
            Where A is a matrix of size (839,172) that corresponds to
            your weird combination of v(i) to build M1_v.<br>
            It seems to me that you should be able to write it that way,
            which would save a lot of time as matrix product are fast in
            Scilab.<br>
          </div>
        </div>
      </blockquote>
    </blockquote>
    <br>
    The test:<br>
    <pre style="font-family:Monospaced;font-style:normal;font-size:12.0;">
<span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,0);">A</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">sign</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(174,92,176);text-decoration:underline;">sprand</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">839</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">172</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(188,143,143);">172</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">normal</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">i</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">A</span><span style="color:rgb(92,92,92);">></span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(0,0,0);">A</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">i</span><span style="color:rgb(74,85,219);">)</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">1</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">i</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">A</span><span style="color:rgb(92,92,92);"><</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(0,0,0);">A</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">i</span><span style="color:rgb(74,85,219);">)</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(92,92,92);">-</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">p</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">rand</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">172</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(174,92,176);text-decoration:underline;">tic</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(160,32,240);">for</span> <span style="color:rgb(0,0,0);">i</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">1</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">1000</span>
    <span style="color:rgb(0,0,0);">M1_v</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">A</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(0,0,0);">p</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(160,32,240);">end</span>
<span style="color:rgb(174,92,176);text-decoration:underline;">toc</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">)</span></span><span style="color:rgb(74,85,219);"></span></pre>
    gives<br>
    -->toc()<br>
     ans  =<br>
        0.156  <br>
    <br>
    But somewhere you will somehow have to actually preset<br>
    A(1,17) = 1;<br>
    A(2,104) = 1;<br>
    A(3,149) = 1;<br>
    A(4, [18 63 103]) = -1;<br>
    A(5, [18 63 103]) = -1;<br>
    A(6,17) = 1;<br>
    ...<br>
    A(838, 104) = 1;<br>
    A(839, 149) = 1;<br>
    <br>
    A priori, this is a bit more human-readable, but also more
    time-consuming... I am afraid that doing this in this way you will
    loose the gain "got" with matrix multiplication.<br>
    <br>
    Samuel<br>
    <br>
    <blockquote cite="mid:B13FDE21-0CA8-4F8A-8B9B-73E221C3546D@utc.fr"
      type="cite">
      <blockquote type="cite">
        <div>
          <div class="moz-cite-prefix"> <br>
            Antoine<br>
            <br>
            <br>
            Le 04/23/2015 11:51 PM, Stéphane Mottelet a écrit :<br>
          </div>
          <blockquote cite="mid:55396964.7030103@utc.fr" type="cite">Hello,

            <br>
            <br>
            I am currently working on a project where Scilab code is
            automatically generated, and after many code optimization,
            the remaining bottleneck is the time that Scilab spends to
            execute simple code like this (full script (where the vector
            has 839 lines) with timings is attached) : <br>
            <br>
            M1_v=[v(17) <br>
            v(104) <br>
            v(149) <br>
            -(v(18)+v(63)+v(103)) <br>
            -(v(18)+v(63)+v(103)) <br>
            v(17) <br>
            ... <br>
            v(104) <br>
            v(149) <br>
            ] <br>
            .../...<br>
          </blockquote>
        </div>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>