<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 01/11/2018 à 13:40, Samuel Gougeon a
      écrit :<br>
    </div>
    <blockquote cite="mid:80d2cb85-40b9-2304-84c3-7b686139dc9e@free.fr"
      type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix">Hello,<br>
        <br>
        Le 01/11/2018 à 09:27, Heinz Nabielek a écrit :<br>
      </div>
      <blockquote cite="mid:A78DF6B7-A270-409B-BC9D-A449B6F2E756@me.com"
        type="cite">
        <pre wrap="">Sorry, Scilab friends, I am still not fluid with vector operations.
Can someone rewrite the for loop for me into something much more efficient?

n=1000;
Z=grand(1,n,'nor',0,1);
r=0.9;
V=Z;
for i=2:n;
        V(i)=r*V(i-1)+sqrt(1-r^2)*Z(i);
end;

The transformation generates an autocorrelated (here rho=0.9) normal distribution V from an uncorrelated normal distribution Z and eventually I will need it for very much larger n values....</pre>
      </blockquote>
      <br>
      You may use filter(), with a feedback component (since V(i)
      depends on the previous state V(i-1) computed at the previous
      step).<br>
      However, as shown below, a quick trial shows an initial
      discrepancy between filter() result and yours with the explicit
      loop.<br>
      I don't know why. May be the setting for the initial condition
      should be carefully considered/tuned...<br>
    </blockquote>
    <br>
    This is certainly the reason. For i=1, V(i-1) is unknown and must be
    somewhat provided. The last filter() option zi is not really
    documented (i have no time to go to the reference to get clear about
    how "the initial condition relative to a "direct form II transposed"
    state space representation." works. Trying to provide a value V(0)
    such that V(1)==Z(1) decreases the initial discrepancy by a factor
    10. But it is still non zero.<br>
    <pre style="font-family:Monospaced;font-style:normal;font-size:12.0;"><span style="color:rgb(0,0,0);">y</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">filter</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(50,185,185);">sqrt</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">r</span><span style="color:rgb(92,92,92);">^</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(74,85,219);">[</span><span style="color:rgb(188,143,143);">1</span> <span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">r</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(0,0,0);">Z</span><span style="color:rgb(0,0,0);">, </span> <span style="color:rgb(0,0,0);">Z</span><span style="color:rgb(74,85,219);">(</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(0,0,0);"></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(92,92,92);">-</span><span style="color:rgb(50,185,185);">sqrt</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">r</span><span style="color:rgb(92,92,92);">^</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)/r</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span></pre>
    <br>
  </body>
</html>