<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Le 22/09/2016 23:09,
      <a class="moz-txt-link-abbreviated" href="mailto:paul.carrico@free.fr">paul.carrico@free.fr</a> a écrit :<br>
    </div>
    <blockquote
cite="mid:1405667942.301303669.1474578580517.JavaMail.root@zimbra5-e1.priv.proxad.net"
      type="cite">
      <style type="text/css">p { margin: 0; }</style>
      <div style="font-family: times new roman,new york,times,serif;
        font-size: 12pt; color: #000000">dear all<br>
        <br>
        I'm novice in Fourier series and other and my question is
        probably naive (sorry for this) => I'm wondering if scilab
        can directly calculate the Fourier coefficient a0, a_k and b_k ?
        <div><br>
        </div>
        <div>I'm currently doing it "by hand" is order to familiarise
          myself with it (and I'm looking at the same time to documents
          on  FFT use and rules to refind the 2 natural frequencies of
          the example here bellow), but it seems I'll need to code the
          coefficient calculations ... Am I right ?</div>
      </div>
    </blockquote>
    .<br>
    Doing that is the main purpose of fft().<br>
    fft() returns the (bilateral) complex coefficients c_k of the
    series.<br>
    a_k and b_k are easily computed from them.<br>
    <pre style="font-family:Monospaced;font-style:normal;font-size:12.0;"><span style="color:rgb(0,0,0);"><span style="color:rgb(100,174,100);font-style:italic;"><span style="color:rgb(100,174,100);font-style:italic;">// Example #1:</span>
<span style="color:rgb(0,0,0);"></span></span>n</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">100</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">x</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">linspace</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</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);">n</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(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">x</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">x</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);">n</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">y</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">sin</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(218,112,214);">%pi</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(0,0,0);">x</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">ft</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">fft</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">y</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">ft</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">clean</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">ft</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">c</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">ft</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(0,0,0);">n</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">c0</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">c</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(100,174,100);font-style:italic;">// c(k)  = ft(k+1)</span>
<span style="color:rgb(100,174,100);font-style:italic;">// c(-k) = ft(n+1-k)</span>

<span style="color:rgb(0,0,0);">a0</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">c0  </span><span style="color:rgb(100,174,100);font-style:italic;">            // average</span>
<span style="color:rgb(0,0,0);">a</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</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);">)</span> <span style="color:rgb(92,92,92);">+</span> <span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</span><span style="color:rgb(255,170,0);">:</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(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</span><sp
an style="color:rgb(92,92,92);">/</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);">2</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span>     <span style="color:rgb(100,174,100);font-style:italic;">//  a_k  = c_k + c_(-k)</span>
<span style="color:rgb(0,0,0);">b</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(218,112,214);">%i</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">n</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(92,92,92);">-</span> <span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</span><span style="color:rgb(255,170,0);">:</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(0,0,0);">n</span><span style="color:rgb(92,92,92);">/</span><s
pan style="color:rgb(188,143,143);">2</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);">)   </span><span style="color:rgb(100,174,100);font-style:italic;"> //  b_k  = %i*(c_k - c_(-k))</span>
<span style="color:rgb(100,174,100);font-style:italic;">
// Example #2:</span>
<span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,0);">n</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">100</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">x</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">linspace</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</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);">n</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(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">x</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">x</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);">n</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
y</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">2</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(50,185,185);">sin</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2</span> <span style="color:rgb(92,92,92);">*</span> <span style="color:rgb(218,112,214);">%pi</span> <span style="color:rgb(92,92,92);">*</span> <span style="color:rgb(0,0,0);">x</span><span style="color:rgb(74,85,219);">)</span> <span style="color:rgb(92,92,92);">-</span> <span style="color:rgb(188,143,143);">3</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(50,185,185);">cos</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(218,112,214);">%pi</span> <span style="color:rgb(92,92,92);">*</span> <span style="color:rgb(0,0,0);">x</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">ft</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">fft</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">y</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">ft</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">clean</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">ft</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">c</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">ft</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(0,0,0);">n</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">c0</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">c</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(0,0,0);">a0</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">c0</span>
<span style="color:rgb(0,0,0);">a</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</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);">)</span> <span style="color:rgb(92,92,92);">+</span> <span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</span><span style="color:rgb(255,170,0);">:</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(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</span><sp
an style="color:rgb(92,92,92);">/</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);">2</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(0,0,0);">b</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(218,112,214);">%i</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">n</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(92,92,92);">-</span> <span style="color:rgb(0,0,0);">c</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">n</span><span style="color:rgb(255,170,0);">:</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(0,0,0);">n</span><span style="color:rgb(92,92,92);">/</span><s
pan style="color:rgb(188,143,143);">2</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);">)</span></pre>
    <tt>--> a = (c(2:(n/2)) + c(n:-1:(n/2+2)))</tt><tt><br>
    </tt><tt> a  = </tt><tt><br>
    </tt><tt>         column 1 to 22</tt><tt><br>
    </tt><tt>  -3.   0.   0.   0.   0.   0.   0.  ...</tt><tt><br>
    </tt><tt> // here is the "-3" coeff of the first even cos() harmonic<br>
      <br>
    </tt><tt>--> b = %i*(c(2:n/2) - c(n:-1:n/2+2))</tt><tt><br>
    </tt><tt> b  = </tt><tt><br>
    </tt><tt>         column 1 to 22</tt><tt><br>
    </tt><tt>   0.   2.   0.   0.   0.   0.   0.  ...<br>
    </tt><tt><tt> // here is the "3" coeff of the second odd sin()
        harmonic</tt><br>
    </tt><tt></tt><tt><br>
    </tt>Anyway, the full x-range is considered as the period.<br>
    If it is not actually the case, some artefacts appear in the
    results.<br>
    To avoid them, it is mandatory to sample <i>x</i> over a multiple
    of its "natural" period.<br>
    Example #1: The period of sin(2*%pi*x) is 2*pi, this is why x must
    be sampled from 0 to 1.<br>
    Example #2: The period of <span style="color:rgb(188,143,143);">2</span><span
      style="color:rgb(92,92,92);">*</span><span
      style="color:rgb(50,185,185);">sin</span><span
      style="color:rgb(74,85,219);">(</span><span
      style="color:rgb(188,143,143);">2</span> <span
      style="color:rgb(92,92,92);">*</span> <span
      style="color:rgb(218,112,214);">%pi</span> <span
      style="color:rgb(92,92,92);">*</span> <span
      style="color:rgb(0,0,0);">x</span><span
      style="color:rgb(74,85,219);">)</span> <span
      style="color:rgb(92,92,92);">-</span> <span
      style="color:rgb(188,143,143);">3</span><span
      style="color:rgb(92,92,92);">*</span><span
      style="color:rgb(50,185,185);">cos</span><span
      style="color:rgb(74,85,219);">(</span><span
      style="color:rgb(218,112,214);">%pi</span> <span
      style="color:rgb(92,92,92);">*</span> <span
      style="color:rgb(0,0,0);">x</span><span
      style="color:rgb(74,85,219);">)</span><span
      style="color:rgb(0,0,0);"></span> is also 2*pi,<br>
                          this is why x must be sampled from 0 to 2 (in
    the cos() argument).<br>
    <br>
    HTH<br>
    Samuel<br>
    <br>
  </body>
</html>