<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hallo Samuel,<br>
Tanquam ex ungue leonem! Great!<br>
<br>
Kind regards<br>
Jens<br>
-------------------------------------------------------------<br>
<br>
<br>
<div class="moz-cite-prefix">Am 05.12.2018 22:12, schrieb Samuel
Gougeon:<br>
</div>
<blockquote cite="mid:1c935a5b-b051-2154-ddd1-2d0fcbdaf550@free.fr"
type="cite">
<meta http-equiv="Context-Type" content="text/html;
charset=windows-1252">
<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">
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><span>x</span> <span>=</span> <span>11</span><span>:</span><span>20</span><span>;</span>
<span>i</span> <span>= </span><span>[</span><span>2</span> <span>5</span> <span>8</span><span>]</span><span>;</span>
<span>// [11 12 13 14 15 16 17 18 19 20]</span>
<span>//Required result: y=[11 12 %nan 13 14 15 %nan 16 17 18 %nan 19 20]</span>
<span>nx</span> <span>=</span> <span>size</span><span>(</span><span>x</span><span>,</span><span>"</span><span>*</span><span>"</span><span>)</span><span>;</span>
<span>ni</span> <span>=</span> <span>size</span><span>(</span><span>i</span><span>,</span><span>"</span><span>*</span><span>"</span><span>)</span><span>;</span>
<span>o</span> <span>=</span> <span>ones</span><span>(</span><span>1</span><span>,</span><span>nx</span><span>)</span><span>;</span>
<span>o</span><span>(</span><span>i</span><span>+</span><span>1</span><span>)</span> <span>=</span> <span>2</span><span>;</span>
<span>newx</span> <span>=</span> <span>zeros</span><span>(</span><span>1</span><span>,</span><span>nx</span><span>+</span><span>ni</span><span>)</span><span>;</span>
<span>newx</span><span>(</span><span>cumsum</span><span>(</span><span>o</span><span>)</span><span>)</span> <span>=</span> <span>x</span><span>;</span>
<span>newx</span><span>(</span><span>i</span><span>+</span><span>(</span><span>1</span><span>:</span><span>ni</span><span>)</span><span>)</span> <span>=</span> <span>%nan
--> newx(i+(1:ni)) = %nan
newx =
11. 12. Nan 13. 14. 15. Nan 16. 17. 18. Nan 19. 20.
</span>
</pre>
Regards<br>
Samuel<br>
<span><br>
</span> <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>
<br>
</body>
</html>