<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>