<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Le 05/12/2018 à 13:01, Jens Simon Strom
      a écrit :<br>
    </div>
    <blockquote cite="mid:5C07BE16.5080504@hslmg.de" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=windows-1252">
      Hallo Scilab experts,<br>
      Given is a numeric vector x of length n and an index vector i
      with  max(i)=n. I want to insert a %nan after every x(i).<br>
      <br>
      Example <br>
      x=[11:20] <br>
      i=[2 5 8] <br>
      Required result: y=[11 12 %nan 13 14 15 %nan 16 17 18 %nan 19 20]<br>
      <br>
      How would you proceed so that it works fast for n>500000 too.<br>
    </blockquote>
    <br>
    The following code does it:<br>
    <br>
    <pre style="font-family:Monospaced;font-style:normal;font-size:12.0;"><span style="color:rgb(0,0,0);">x</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">11</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">20</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(74,85,219);">[</span><span style="color:rgb(188,143,143);">2</span> <span style="color:rgb(188,143,143);">5</span> <span style="color:rgb(188,143,143);">8</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(100,174,100);font-style:italic;">//                   [11 12      13 14 15      16 17 18      19 20]</span>
<span style="color:rgb(100,174,100);font-style:italic;">//Required result: y=[11 12 %nan 13 14 15 %nan 16 17 18 %nan 19 20]</span>
<span style="color:rgb(0,0,0);">nx</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">size</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">x</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">*</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">ni</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">size</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">i</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">*</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">o</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">ones</span><span style="color:rgb(74,85,219);">(</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);">nx</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">o</span><span style="color:rgb(74,85,219);">(</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(74,85,219);">)</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">2</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">newx</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">zeros</span><span style="color:rgb(74,85,219);">(</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);">nx</span><span style="color:rgb(92,92,92);">+</span><span style="color:rgb(0,0,0);">ni</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">newx</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(50,185,185);">cumsum</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">o</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">x</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">newx</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">i</span><span style="color:rgb(92,92,92);">+</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">ni</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(218,112,214);">%nan

<font color="#000000">--> newx(i+(1:ni)) = %nan
 newx  = 
   11.   12.   Nan   13.   14.   15.   Nan   16.   17.   18.   Nan   19.   20.
</font></span>
</pre>
    Regards<br>
    Samuel<br>
    <span style="color:rgb(218,112,214);"><font color="#000000"><br>
      </font></span>
  </body>
</html>