"int",
"robust",
"sci2for",
- "signal",
"statistics",
"tdcs",
- "gui",
+ "gui",
];
+ Directories=[Directories;"SCI/modules/signal_processing/macros"];
Directories=[Directories;"SCI/modules/sparse/macros"];
Directories=[Directories;"SCI/modules/polynomials/macros"];
Directories=[Directories;"SCI/modules/string/macros"];
#include "../../../../routines/interf/list.fundef"
#define IN_sigelm 18
-#include "../../../../routines/signal/signal.fundef"
+#include "../../signal_processing/sci_gateway/signal.fundef"
#define IN_intinterp 19
#include "../../../../routines/interf/interp.fundef"
--- /dev/null
+changelog signal_processing module
\ No newline at end of file
--- /dev/null
+// ====================================================================\r
+// This file contains command to be executed at the end \r
+// of a scilab session for signal_processing module\r
+// Copyright INRIA 2006\r
+// ====================================================================\r
+// delete help chapter\r
+global LANGUAGE\r
+\r
+if LANGUAGE == 'fr' then\r
+ del_help_chapter("Traitement du Signal");\r
+elseif LANGUAGE == 'eng' then\r
+ del_help_chapter("Signal Processing");\r
+end\r
+\r
+clear del_help_chapter LANGUAGE;\r
+// ====================================================================\r
--- /dev/null
+// ====================================================================\r
+// signal_processing module initialisation file \r
+// Copyright INRIA 2006\r
+// ====================================================================\r
+//Load functions librarie\r
+load('SCI/modules/signal_processing/macros/lib');\r
+// ====================================================================\r
+//add help chapter\r
+global LANGUAGE\r
+\r
+path = get_absolute_file_path('signal.start');\r
+path = getshortpathname(path);\r
+\r
+if LANGUAGE == 'fr' then\r
+ path = pathconvert(part(path,1:(length(path)-5))+'/help/fr',%f,%f);\r
+ add_help_chapter("Traitement du Signal",path);\r
+elseif LANGUAGE == 'eng' then\r
+ path = pathconvert(part(path,1:(length(path)-5))+'/help/eng',%f,%f);\r
+ add_help_chapter("Signal Processing",path);\r
+end\r
+\r
+clear path get_absolute_file_path add_help_chapter LANGUAGE;\r
+// ====================================================================\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>Signal</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="Signal"> Signal manual description</SHORT_DESCRIPTION>
+ <SECTION label="Filters">
+ <ITEMIZE>
+ <ITEM label="analpf">
+ <SP>: analog low-pass filter</SP>
+ </ITEM>
+ <ITEM label="buttmag">
+ <SP>: squared magnitude response of a Butterworth filter</SP>
+ </ITEM>
+ <ITEM label="casc">
+ <SP>: creates cascade realization of filter</SP>
+ </ITEM>
+ <ITEM label="cheb1mag">
+ <SP>: square magnitude response of a type 1 Chebyshev filter</SP>
+ </ITEM>
+ <ITEM label="cheb2mag">
+ <SP>: square magnitude response of a type 1 Chebyshev filter</SP>
+ </ITEM>
+ <ITEM label="chepol">
+ <SP>: recursive implementation of Chebychev polynomial</SP>
+ </ITEM>
+ <ITEM label="convol">
+ <SP>: convolution of 2 discrete series</SP>
+ </ITEM>
+ <ITEM label="ell1 mag">
+ <SP>: squared magnitude of an elliptic filter</SP>
+ </ITEM>
+ <ITEM label="eqfir">
+ <SP>: minimax multi-band, linear phase, FIR filter</SP>
+ </ITEM>
+ <ITEM label="eqiir">
+ <SP>: design of iir filter</SP>
+ </ITEM>
+ <ITEM label="faurre">
+ <SP>: optimal lqg filter.</SP>
+ </ITEM>
+ <ITEM label="lindquis">
+ <SP>: optimal lqg filter lindquist algorithm</SP>
+ </ITEM>
+ <ITEM label="ffilt">
+ <SP>: FIR low-pass,high-pass, band-pass, or stop-band filter</SP>
+ </ITEM>
+ <ITEM label="filter">
+ <SP>: compute the filter model</SP>
+ </ITEM>
+ <ITEM label="find_freq">
+ <SP>: parameter compatibility for elliptic filter design</SP>
+ </ITEM>
+ <ITEM label="findm">
+ <SP>: for elliptic filter design</SP>
+ </ITEM>
+ <ITEM label="frmag">
+ <SP>: magnitude of the frequency responses of FIR and IIR filters.</SP>
+ </ITEM>
+ <ITEM label="fsfirlin">
+ <SP>: design of FIR, linear phase (frequency sampling technique)</SP>
+ </ITEM>
+ <ITEM label="fwiir">
+ <SP>: optimum design of IIR filters in cascade realization,</SP>
+ </ITEM>
+ <ITEM label="iir">
+ <SP>: designs an iir digital filter using analog filter designs.</SP>
+ </ITEM>
+ <ITEM label="iirgroup">
+ <SP>: group delay of iir filter</SP>
+ </ITEM>
+ <ITEM label="iirlp">
+ <SP>: Lp IIR filters optimization</SP>
+ </ITEM>
+ <ITEM label="group">
+ <SP>: calculate the group delay of a digital filter</SP>
+ </ITEM>
+ <ITEM label="optfir">
+ <SP>: optimal design of linear phase filters using linear programming</SP>
+ </ITEM>
+ <ITEM label="remezb">
+ <SP>: minimax approximation of a frequency domain magnitude response.</SP>
+ </ITEM>
+ <ITEM label="kalm">
+ <SP>: Kalman update and error variance</SP>
+ </ITEM>
+ <ITEM label="lev">
+ <SP>: resolve the Yule-Walker equations :</SP>
+ </ITEM>
+ <ITEM label="levin">
+ <SP>: solve recursively Toeplitz system (normal equations)</SP>
+ </ITEM>
+ <ITEM label="srfaur">
+ <SP>: square-root algorithm for the algebraic Riccati equation.</SP>
+ </ITEM>
+ <ITEM label="srkf">
+ <SP>: square-root Kalman filter algorithm</SP>
+ </ITEM>
+ <ITEM label="sskf">
+ <SP>: steady-state Kalman filter</SP>
+ </ITEM>
+ <ITEM label="system">
+ <SP>: generates the next observation given the old state</SP>
+ </ITEM>
+ <ITEM label="trans">
+ <SP>: transformation of standardized low-pass filter into low-pass, high-pass, band-pass, stop-band.</SP>
+ </ITEM>
+ <ITEM label="wfir">
+ <SP>: linear-phase windowed FIR low-pass, band-pass, high-pass, stop-band</SP>
+ </ITEM>
+ <ITEM label="wiener">
+ <SP>: Wiener estimate (forward-backward Kalman filter formulation)</SP>
+ </ITEM>
+ <ITEM label="wigner">
+ <SP>: time-frequency wigner spectrum of a signal.</SP>
+ </ITEM>
+ <ITEM label="window">
+ <SP>: calculate symmetric window</SP>
+ </ITEM>
+ <ITEM label="zpbutt">
+ <SP>: Butterworth analog filter</SP>
+ </ITEM>
+ <ITEM label="zpch1">
+ <SP>: poles of a type 1 Chebyshev analog filter</SP>
+ </ITEM>
+ <ITEM label="zpch2">
+ <SP>: poles and zeros of a type 2 Chebyshev analog filter</SP>
+ </ITEM>
+ <ITEM label="zpell">
+ <SP>: poles and zeros of prototype lowpass elliptic filter</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Spectral estimation">
+ <ITEMIZE>
+ <ITEM label="corr">
+ <SP>: correlation coefficients</SP>
+ </ITEM>
+ <ITEM label="cspect">
+ <SP>: spectral estimation using the modified periodogram method.</SP>
+ </ITEM>
+ <ITEM label="czt">
+ <SP>: chirp z-transform algorithm</SP>
+ </ITEM>
+ <ITEM label="intdec">
+ <SP>: change the sampling rate of a 1D or 2D signal</SP>
+ </ITEM>
+ <ITEM label="mese">
+ <SP>: calculate the maximum entropy spectral estimate</SP>
+ </ITEM>
+ <ITEM label="pspect">
+ <SP>: auto and cross-spectral estimate</SP>
+ </ITEM>
+ <ITEM label="wigner">
+ <SP>: Wigner-Ville time/frequency spectral estimation</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Transforms">
+ <ITEMIZE>
+ <ITEM label="dft">
+ <SP>: discrete Fourier transform</SP>
+ </ITEM>
+ <ITEM label="fft">
+ <SP>: fast flourier transform</SP>
+ </ITEM>
+ <ITEM label="hilb">
+ <SP>: Hilbert transform centred around the origin.</SP>
+ </ITEM>
+ <ITEM label="hank">
+ <SP>: hankel matrix of the covariance sequence of a vector process</SP>
+ </ITEM>
+ <ITEM label="mfft">
+ <SP>: fft for a multi-dimensional signal</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Identification">
+ <ITEMIZE>
+ <ITEM label="lattn,lattp">
+ <SP>: recursive solution of normal equations</SP>
+ </ITEM>
+ <ITEM label="phc">
+ <SP>: State space realisation by the principal hankel component approximation method,</SP>
+ </ITEM>
+ <ITEM label="rpem">
+ <SP>: identification by the recursive prediction error method</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Miscellaneous">
+ <ITEMIZE>
+ <ITEM label="lgfft">
+ <SP>: computes p = ceil (log_2(x))</SP>
+ </ITEM>
+ <ITEM label="sinc">
+ <SP>: calculate the function sin(2*pi*fl*t)/(pi*t)</SP>
+ </ITEM>
+ <ITEM label="sincd">
+ <SP>: calculates the function Sin(N*x)/Sin(x)</SP>
+ </ITEM>
+ <ITEM label="%k">
+ <SP>: Jacobi's complete elliptic integral</SP>
+ </ITEM>
+ <ITEM label="%asn">
+ <SP>: .TP the elliptic integral :</SP>
+ </ITEM>
+ <ITEM label="%sn">
+ <SP>: Jacobi 's elliptic function with parameter m</SP>
+ </ITEM>
+ <ITEM label="bilt">
+ <SP>: bilinear transform or biquadratic transform.</SP>
+ </ITEM>
+ <ITEM label="jmat">
+ <SP>: permutes block rows or block columns of a matrix</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>analpf</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="analpf"> create analog low-pass filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hs,pols,zers,gain]=analpf(n,fdesign,rp,omega) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fdesign</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : filter design method : <VERB>'butt'</VERB> or <VERB>'cheb1'</VERB> or <VERB>'cheb2'</VERB> or <VERB>'ellip'</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>rp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 2-vector of error values for cheb1, cheb2 and ellip filters where only <VERB>rp(1)</VERB> is used for cheb1 case, only <VERB>rp(2)</VERB> is used for cheb2 case, and <VERB>rp(1)</VERB> and <VERB>rp(2)</VERB> are both used for ellip case. <VERB>0<rp(1),rp(2)<1</VERB></SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for cheb1 filters <VERB>1-rp(1)<ripple<1</VERB> in passband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for cheb2 filters <VERB>0<ripple<rp(2)</VERB> in stopband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for ellip filters <VERB>1-rp(1)<ripple<1</VERB> in passband <VERB>0<ripple<rp(2)</VERB> in stopband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omega</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: cut-off frequency of low-pass filter in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hs</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: rational polynomial transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>pols</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: poles of transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zers</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: zeros of transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gain</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain of transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Creates analog low-pass filter with cut-off frequency at omega.</P>
+ <P>
+ <VERB>hs=gain*poly(zers,'s')/poly(pols,'s')</VERB>
+ </P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Evaluate magnitude response of continuous-time system
+hs=analpf(4,'cheb1',[.1 0],5)
+fr=0:.1:15;
+hf=freq(hs(2),hs(3),%i*fr);
+hm=abs(hf);
+plot(fr,hm)
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>buttmag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="buttmag"> response of Butterworth filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[h]=buttmag(order,omegac,sample) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>order</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : cut-off frequency in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sample</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of frequency where <VERB>buttmag</VERB> is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Butterworth filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ squared magnitude response of a Butterworth filter
+ <VERB>omegac</VERB> = cutoff frequency ; <VERB>sample</VERB> = sample of frequencies</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//squared magnitude response of Butterworth filter
+h=buttmag(13,300,1:1000);
+mag=20*log(h)'/log(10);
+plot2d((1:1000)',mag,[2],"011"," ",[0,-180,1000,20])
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>casc</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="casc"> cascade realization of filter from coefficients</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cels]=casc(x,z) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: (4xN)-matrix where each column is a cascade element, the first two column entries being the numerator coefficients and the second two column entries being the denominator coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>z</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string representing the cascade variable</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cels</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting cascade representation</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Creates cascade realization of filter from a matrix of coefficients
+ (utility function).</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+x=[1,2,3;4,5,6;7,8,9;10,11,12]
+cels=casc(x,'z')
+ ]]>
+ </EXAMPLE>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cepstrum</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cepstrum"> cepstrum calculation</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>fresp = cepstrum(w,mag) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>w</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive real vector of frequencies (rad/sec)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>mag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector of magnitudes (same size as <VERB>w</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fresp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: complex vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P><VERB>fresp = cepstrum(w,mag)</VERB> returns a frequency response <VERB>fresp(i)</VERB>
+ whose magnitude at frequency <VERB>w(i)</VERB> equals <VERB>mag(i)</VERB> and such
+ that the phase of <VERB>freq</VERB> corresponds to a stable and minimum phase
+ system. <VERB>w</VERB> needs not to be sorted, but minimal entry should not be
+ close to zero and all the entries of <VERB>w</VERB> should be different.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+w=0.1:0.1:5;mag=1+abs(sin(w));
+fresp=cepstrum(w,mag);
+plot2d([w',w'],[mag(:),abs(fresp)])
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>frfit</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cheb1mag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cheb1mag"> response of Chebyshev type 1 filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[h2]=cheb1mag(n,omegac,epsilon,sample) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : cut-off frequency</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>epsilon</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : ripple in pass band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sample</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of frequencies where <VERB>cheb1mag</VERB> is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h2</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Chebyshev I filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Square magnitude response of a type 1 Chebyshev filter.</P>
+ <P><VERB>omegac</VERB>=passband edge.</P>
+ <P><VERB>epsilon</VERB>: such that <VERB>1/(1+epsilon^2)</VERB>=passband ripple.</P>
+ <P><VERB>sample</VERB>: vector of frequencies where the square magnitude
+ is desired.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Chebyshev; ripple in the passband
+n=13;epsilon=0.2;omegac=3;sample=0:0.05:10;
+h=cheb1mag(n,omegac,epsilon,sample);
+plot2d(sample,h)
+xtitle('','frequencies','magnitude')
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>buttmag</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cheb2mag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cheb2mag"> response of type 2 Chebyshev filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[h2]=cheb2mag(n,omegar,A,sample) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer ; filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real scalar : cut-off frequency</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>A</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: attenuation in stop band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sample</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of frequencies where cheb2mag is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h2</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of Chebyshev II filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Square magnitude response of a type 2 Chebyshev filter.</P>
+ <P><VERB>omegar</VERB> = stopband edge, <VERB>sample</VERB> = vector of
+ frequencies where the square magnitude <VERB>h2</VERB> is desired.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Chebyshev; ripple in the stopband
+n=10;omegar=6;A=1/0.2;sample=0.0001:0.05:10;
+h2=cheb2mag(n,omegar,A,sample);
+plot(sample,log(h2)/log(10),'frequencies','magnitude in dB')
+//Plotting of frequency edges
+minval=(-maxi(-log(h2)))/log(10);
+plot2d([omegar;omegar],[minval;0],[2],"000");
+//Computation of the attenuation in dB at the stopband edge
+attenuation=-log(A*A)/log(10);
+plot2d(sample',attenuation*ones(sample)',[5],"000")
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>cheb1mag</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>chepol</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="chepol"> Chebychev polynomial</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[Tn]=chepol(n,var) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : polynomial order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>var</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : polynomial variable</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>Tn</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: polynomial in the variable <VERB>var</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Recursive implementation of Chebychev polynomial.
+ <VERB>Tn=2*poly(0,var)*chepol(n-1,var)-chepol(n-2,var)</VERB> with
+ <VERB>T0=1</VERB> and <VERB>T1=poly(0,var)</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+chepol(4,'x')
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>convol</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="convol"> convolution</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y]=convol(h,x) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[y,e1]=convol(h,x,e0) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x,h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>:input sequences (<VERB>h</VERB> is a "short" sequence, <VERB>x</VERB> a "long" one)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>e0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: old tail to overlap add (not used in first call)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output of convolution</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>e1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: new tail to overlap add (not used in last call)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ calculates the convolution <VERB>y= h*x</VERB> of two
+ discrete sequences by using the fft. Overlap add method can be used.</P>
+ <P>
+ USE OF OVERLAP ADD METHOD:
+ For x=[x1,x2,...,xNm1,xN]
+ First call is [y1,e1]=convol(h,x1);
+ Subsequent calls : [yk,ek]=convol(h,xk,ekm1);
+ Final call : [yN]=convol(h,xN,eNm1);
+ Finally y=[y1,y2,...,yNm1,yN]</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+x=1:3;
+h1=[1,0,0,0,0];h2=[0,1,0,0,0];h3=[0,0,1,0,0];
+x1=convol(h1,x),x2=convol(h2,x),x3=convol(h3,x),
+convol(h1+h2+h3,x)
+p1=poly(x,'x','coeff')
+p2=poly(h1+h2+h3,'x','coeff')
+p1*p2
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>corr</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>pspect</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F. D , C. Bunks Date 3 Oct. 1988; ; </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>corr</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="corr"> correlation, covariance</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cov,Mean]=corr(x,[y],nlags) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[cov,Mean]=corr('fft',xmacro,[ymacro],n,sect) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM> </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[w,xu]=corr('updt',x1,[y1],w0) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[w,xu]=corr('updt',x2,[y2],w,xu) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM> ... </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[wk]=corr('updt',xk,[yk],w,xu) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector, default value x.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>nlags</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of correlation coefficients desired.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xmacro</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a scilab external (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ymacro</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a scilab external (see below), default value xmacro</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: an integer, total size of the sequence (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sect</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: size of sections of the sequence (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xi</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>yi</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector,default value xi.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cov</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector, the correlation coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>Mean</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real number or vector, the mean of x and if given y</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Computes
+ </P>
+ <VERBATIM>
+<![CDATA[
+ n - m
+ ====
+ \ 1
+ cov(m) = > (x(k) - xmean) (y(m+k) - ymean) * ---
+ / n
+ ====
+ k = 1
+ ]]>
+ </VERBATIM>
+ <P>
+ for m=0,..,<VERB>nlag-1</VERB> and two vectors <VERB>x=[x(1),..,x(n)]</VERB>
+ <VERB>y=[y(1),..,y(n)]</VERB>
+ </P>
+ <P>
+ Note that if x and y sequences are differents corr(x,y,...) is
+ different with corr(y,x,...)
+ </P>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label="Short sequences">
+ <SP><VERB>[cov,Mean]=corr(x,[y],nlags)</VERB> returns the first nlags
+ correlation coefficients and Mean = <VERB>mean(x)</VERB>
+ (mean of <VERB>[x,y]</VERB> if <VERB>y</VERB> is an argument).
+ The sequence <VERB>x</VERB> (resp. <VERB>y</VERB>) is assumed real, and <VERB>x</VERB>
+ and <VERB>y</VERB> are of same dimension n.</SP>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM label="Long sequences">
+ <SP><VERB>[cov,Mean]=corr('fft',xmacro,[ymacro],n,sect)</VERB> Here <VERB>xmacro</VERB> is either</SP>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM>
+ <P>
+ a function of type <VERB>[xx]=xmacro(sect,istart)</VERB> which
+ returns a vector <VERB>xx</VERB> of dimension
+ <VERB>nsect</VERB> containing the part of the sequence with
+ indices from <VERB>istart</VERB> to
+ <VERB>istart+sect-1</VERB>.</P>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM>
+ <P>
+ a fortran subroutine or C procedure which performs the same
+ calculation. (See the source code of <VERB>dgetx</VERB> for an
+ example). <VERB>n</VERB> = total size of the
+ sequence. <VERB>sect</VERB> = size of sections of the
+ sequence. <VERB>sect</VERB> must be a power of
+ 2. <VERB>cov</VERB> has dimension
+ <VERB>sect</VERB>. Calculation is performed by FFT.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM label="Updating method">
+ <VERBATIM>
+<![CDATA[
+ [w,xu]=corr('updt',x1,[y1],w0)
+ [w,xu]=corr('updt',x2,[y2],w,xu)
+ ...
+ wk=corr('updt',xk,[yk],w,xu)
+ ]]>
+ </VERBATIM>
+ <P>
+ With this calling sequence the calculation is updated at each
+ call to <VERB>corr</VERB>.</P>
+ <VERBATIM>
+<![CDATA[
+ w0 = 0*ones(1,2*nlags);
+ nlags = power of 2.
+ ]]>
+ </VERBATIM>
+ <P><VERB>x1,x2,...</VERB> are parts of <VERB>x</VERB> such that
+ <VERB>x=[x1,x2,...]</VERB> and sizes of <VERB>xi</VERB> a power of
+ 2. To get <VERB>nlags</VERB> coefficients a final fft must be
+ performed <VERB>c=fft(w,1)/n</VERB>; <VERB>cov=c(1nlags)</VERB>
+ (<VERB>n</VERB> is the size of <VERB>x (y)</VERB>). Caution: this
+ calling sequence assumes that <VERB>xmean = ymean = 0</VERB>.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+x=%pi/10:%pi/10:102.4*%pi;
+rand('seed');rand('normal');
+y=[.8*sin(x)+.8*sin(2*x)+rand(x);.8*sin(x)+.8*sin(1.99*x)+rand(x)];
+c=[];
+for j=1:2,for k=1:2,c=[c;corr(y(k,:),y(j,:),64)];end;end;
+c=matrix(c,2,128);cov=[];
+for j=1:64,cov=[cov;c(:,(j-1)*2+1:2*j)];end;
+rand('unif')
+//
+rand('normal');x=rand(1,256);y=-x;
+deff('[z]=xx(inc,is)','z=x(is:is+inc-1)');
+deff('[z]=yy(inc,is)','z=y(is:is+inc-1)');
+[c,mxy]=corr(x,y,32);
+x=x-mxy(1)*ones(x);y=y-mxy(2)*ones(y); //centring
+c1=corr(x,y,32);c2=corr(x,32);
+norm(c1+c2,1)
+[c3,m3]=corr('fft',xx,yy,256,32);
+norm(c1-c3,1)
+[c4,m4]=corr('fft',xx,256,32);
+norm(m3,1),norm(m4,1)
+norm(c3-c1,1),norm(c4-c2,1)
+x1=x(1:128);x2=x(129:256);
+y1=y(1:128);y2=y(129:256);
+w0=0*ones(1:64); //32 coeffs
+[w1,xu]=corr('u',x1,y1,w0);w2=corr('u',x2,y2,w1,xu);
+zz=real(fft(w2,1))/256;c5=zz(1:32);
+norm(c5-c1,1)
+[w1,xu]=corr('u',x1,w0);w2=corr('u',x2,w1,xu);
+zz=real(fft(w2,1))/256;c6=zz(1:32);
+norm(c6-c2,1)
+rand('unif')
+// test for Fortran or C external
+//
+deff('[y]=xmacro(sec,ist)','y=sin(ist:(ist+sec-1))');
+x=xmacro(100,1);
+[cc1,mm1]=corr(x,2^3);
+[cc,mm]=corr('fft',xmacro,100,2^3);
+[cc2,mm2]=corr('fft','corexx',100,2^3);
+[maxi(abs(cc-cc1)),maxi(abs(mm-mm1)),maxi(abs(cc-cc2)),maxi(abs(mm-mm2))]
+
+deff('[y]=ymacro(sec,ist)','y=cos(ist:(ist+sec-1))');
+y=ymacro(100,1);
+[cc1,mm1]=corr(x,y,2^3);
+[cc,mm]=corr('fft',xmacro,ymacro,100,2^3);
+[cc2,mm2]=corr('fft','corexx','corexy',100,2^3);
+[maxi(abs(cc-cc1)),maxi(abs(mm-mm1)),maxi(abs(cc-cc2)),maxi(abs(mm-mm2))]
+
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cspect</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cspect"> spectral estimation (correlation method) </SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[sm,cwp]=cspect(nlags,ntp,wtype,x,y,wpar) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data if vector, amount of input data if scalar</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data if vector, amount of input data if scalar</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>nlags</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of correlation lags (positive integer)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ntp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of transform points (positive integer)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wtype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : <VERB>'re','tr','hm','hn','kr','ch'</VERB> (window type)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wpar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: optional window parameters for <VERB>wtype='kr', wpar>0</VERB> and for <VERB>wtype='ch', 0 < wpar(1) < .5, wpar(2) > 0</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sm</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: power spectral estimate in the interval [0,1]</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cwp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: calculated value of unspecified Chebyshev window parameter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Spectral estimation using the correlation method.
+ Cross-spectral estimate of <VERB>x</VERB> and <VERB>y</VERB> is calculated when both
+ <VERB>x</VERB> and <VERB>y</VERB> are given. Auto-spectral estimate of <VERB>x</VERB> is calculated
+ if <VERB>y</VERB> is not given.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+rand('normal');rand('seed',0);
+x=rand(1:1024-33+1);
+//make low-pass filter with eqfir
+nf=33;bedge=[0 .1;.125 .5];des=[1 0];wate=[1 1];
+h=eqfir(nf,bedge,des,wate);
+//filter white data to obtain colored data
+h1=[h 0*ones(1:maxi(size(x))-1)];
+x1=[x 0*ones(1:maxi(size(h))-1)];
+hf=fft(h1,-1); xf=fft(x1,-1);yf=hf.*xf;y=real(fft(yf,1));
+sm=cspect(100,200,'tr',y);
+smsize=maxi(size(sm));fr=(1:smsize)/smsize;
+plot(fr,log(sm))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>pspect</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. Bunks ; Digital Signal Processing by Oppenheim and Schafer</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>czt</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="czt"> chirp z-transform algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[czx]=czt(x,m,w,phi,a,theta) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input data sequence</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: czt is evaluated at <VERB>m</VERB> points in z-plane</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>w</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: magnitude multiplier</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>phi</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: phase increment</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>a</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: initial magnitude</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>theta</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: initial phase</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>czx</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: chirp z-transform output</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ chirp z-transform algorithm which calcultes the z-transform on a
+ spiral in the z-plane at the points
+ <VERB>[a*exp(j*theta)][w^kexp(j*k*phi)] </VERB> for
+ <VERB>k=0,1,...,m-1</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+a=.7*exp(%i*%pi/6);
+[ffr,bds]=xgetech(); //preserve current context
+rect=[-1.2,-1.2*sqrt(2),1.2,1.2*sqrt(2)];
+t=2*%pi*(0:179)/179;xsetech([0,0,0.5,1]);
+plot2d(sin(t)',cos(t)',[2],"012",' ',rect)
+plot2d([0 real(a)]',[0 imag(a)]',[3],"000")
+xsegs([-1.0,0;1.0,0],[0,-1.0;0,1.0])
+w0=.93*exp(-%i*%pi/15);w=exp(-(0:9)*log(w0));z=a*w;
+zr=real(z);zi=imag(z);
+plot2d(zr',zi',[5],"000")
+xsetech([0.5,0,0.5,1]);
+plot2d(sin(t)',cos(t)',[2],"012",' ',rect)
+plot2d([0 real(a)]',[0 imag(a)]',[-1],"000")
+xsegs([-1.0,0;1.0,0],[0,-1.0;0,1.0])
+w0=w0/(.93*.93);w=exp(-(0:9)*log(w0));z=a*w;
+zr=real(z);zi=imag(z);
+plot2d(zr',zi',[5],"000")
+xsetech(ffr,bds); //restore context
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. Bunks</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>detrend</TITLE>
+ <TYPE>Scilab Function </TYPE>
+ <DATE>24-Apr-2005</DATE>
+ <SHORT_DESCRIPTION name="detrend">remove constant, linear or piecewise linear trend from a vector</SHORT_DESCRIPTION>
+
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>y = detrend(x)</CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>y = detrend(x,flag)</CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>y = detrend(x,flag,bp)</CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+
+ <PARAM>
+ <PARAM_INDENT>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : vector or matrix of real or complex numbers (the signal to treat)
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : a string equal to "linear" (or "l") for linear or piecewise linear treatment
+ or "constant" (or "c") for constant treatment.
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>bp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : the breakpoints to provide if you want a piecewise linear treatment.
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : output, the signal x with the trend removed from it.
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+
+ <DESCRIPTION>
+ <P>
+ This function removes the constant or linear or
+ piecewise linear trend from a vector <VERB>x</VERB>. In general
+ this can be useful before a fourier analysis. If <VERB>x</VERB> is
+ matrix this function removes the trend of each column of x.
+ </P>
+ <P>
+ When <VERB>flag</VERB> = "constant" or "c" <VERB>detrend</VERB> removes the constant trend
+ (simply the mean of the signal) and when <VERB>flag</VERB> = "linear" or "l" the function
+ removes the linear trend. By adding a third argument <VERB>bp</VERB> it is possible to
+ remove a continuous <EM>piecewise linear</EM> trend. Note that the "instants" of the signal
+ <VERB>x</VERB> goes from 0 to m-1 (m = length(x) if x is a vector and m = size(x,1) in case
+ x is a matrix). So the breakpoints <VERB>bp(i)</VERB> must be reals in <EM>[0 m-1]</EM>
+ (breakpoints outside are simply removed from <VERB>bp</VERB> vector).
+ </P>
+ <P>
+ The trend is got by a least square fit of <VERB>x</VERB> on the appropriate function space.
+ </P>
+ </DESCRIPTION>
+
+ <EXAMPLE><![CDATA[
+// example #1
+t = linspace(0,16*%pi,1000)';
+x = -20 + t + 0.3*sin(0.5*t) + sin(t) + 2*sin(2*t) + 0.5*sin(3*t);
+y = detrend(x);
+xbasc()
+plot2d(t,[x y],style=[2 5])
+legend(["before detrend","after detrend"]);
+xgrid()
+
+// example #2
+t = linspace(0,32*%pi,2000)';
+x = abs(t-16*%pi) + 0.3*sin(0.5*t) + sin(t) + 2*sin(2*t) + 0.5*sin(3*t);
+y = detrend(x,"linear",1000);
+xbasc()
+plot2d(t,[x y],style=[2 5])
+legend(["before detrend","after detrend"]);
+xgrid()
+ ]]></EXAMPLE>
+
+ <AUTHOR>
+ Bruno Pincon
+ </AUTHOR>
+
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>dft</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="dft"> discrete Fourier transform</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xf]=dft(x,flag); </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: indicates dft (flag=-1) or idft (flag=1)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xf</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Function which computes dft of vector <VERB>x</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+n=8;omega = exp(-2*%pi*%i/n);
+j=0:n-1;F=omega.^(j'*j); //Fourier matrix
+x=1:8;x=x(:);
+F*x
+fft(x,-1)
+dft(x,-1)
+inv(F)*x
+fft(x,1)
+dft(x,1)
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>ell1mag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="ell1mag"> magnitude of elliptic filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[v]=ell1mag(eps,m1,z) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>eps</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: passband ripple=<VERB>1/(1+eps^2)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: stopband ripple=<VERB>1/(1+(eps^2)/m1)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>z</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: sample vector of values in the complex plane</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>v</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: elliptic filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Function used for squared magnitude of an elliptic filter.
+ Usually <VERB>m1=eps*eps/(a*a-1)</VERB>. Returns
+ <VERB>v=real(ones(z)./(ones(z)+eps*eps*s.*s))</VERB> for <VERB>s=%sn(z,m1)</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+deff('[alpha,beta]=alpha_beta(n,m,m1)',...
+'if 2*int(n/2)=n then, beta=K1; else, beta=0;end;...
+alpha=%k(1-m1)/%k(1-m);')
+epsilon=0.1;A=10; //ripple parameters
+m1=(epsilon*epsilon)/(A*A-1);n=5;omegac=6;
+m=find_freq(epsilon,A,n);omegar = omegac/sqrt(m)
+%k(1-m1)*%k(m)/(%k(m1)*%k(1-m))-n //Check...
+[alpha,beta]=alpha_beta(n,m,m1)
+alpha*%asn(1,m)-n*%k(m1) //Check
+sample=0:0.01:20;
+//Now we map the positive real axis into the contour...
+z=alpha*%asn(sample/omegac,m)+beta*ones(sample);
+plot(sample,ell1mag(epsilon,m1,z))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>buttmag</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>eqfir</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="eqfir"> minimax approximation of FIR filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hn]=eqfir(nf,bedge,des,wate) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>nf</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of output filter points desired</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>bedge</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Mx2 matrix giving a pair of edges for each band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>des</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: M-vector giving desired magnitude for each band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wate</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: M-vector giving relative weight of error in each band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hn</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output of linear-phase FIR filter coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Minimax approximation of multi-band, linear phase, FIR filter</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+hn=eqfir(33,[0 .2;.25 .35;.4 .5],[0 1 0],[1 1 1]);
+[hm,fr]=frmag(hn,256);
+plot(fr,hm),
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>eqiir</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="eqiir"> Design of iir filters</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cells,fact,zzeros,zpoles]=eqiir(ftype,approx,om,deltap,deltas) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>ftype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter type (<VERB>'lp','hp','sb','bp'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>approx</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: design approximation (<VERB>'butt','cheb1','cheb2','ellip'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>om</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 4-vector of cutoff frequencies (in radians) <VERB>om=[om1,om2,om3,om4]</VERB>, <VERB>0 <= om1 <= om2 <= om3 <= om4 <= pi</VERB>. When <VERB>ftype</VERB>='lp' or 'hp', <VERB>om3</VERB> and <VERB>om4</VERB> are not used and may be set to 0.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>deltap</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: ripple in the passband. <VERB>0<= deltap <=1</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>deltas</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: ripple in the stopband. <VERB>0<= deltas <=1</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cells</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: realization of the filter as second order cells</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fact</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: normalization constant</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zzeros</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: zeros in the z-domain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zpoles</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: poles in the z-domain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Design of iir filter interface with eqiir (syredi)</P>
+ <P>
+ The filter obtained is <VERB>h(z)=fact</VERB>*product of the elements of
+ <VERB>cells</VERB>.</P>
+ <P>
+ That is <VERB>hz=fact*prod(cells(2))./prod(cells(3))</VERB></P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+[cells,fact,zzeros,zpoles]=...
+eqiir('lp','ellip',[2*%pi/10,4*%pi/10],0.02,0.001)
+transfer=fact*poly(zzeros,'z')/poly(zpoles,'z')
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>eqfir</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>iir</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>faurre</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="faurre"> filter computation by simple Faurre algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[P,R,T]=faurre(n,H,F,G,R0) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>H, F, G</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: estimated triple from the covariance sequence of <VERB>y</VERB>.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>R0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: E(yk*yk')</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>P</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: solution of the Riccati equation after n iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>R, T</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain matrix of the filter.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ This function computes iteratively the minimal solution of the algebraic
+ Riccati equation and gives the matrices <VERB>R</VERB> and <VERB>T</VERB> of the
+ filter model.
+ The algorithm tries to compute the solution P as the growing limit of a
+ sequence of matrices Pn such that</P>
+ <VERBATIM>
+<![CDATA[
+ -1
+Pn+1=F*Pn*F'+(G-F*Pn*h')*(R0-H*Pn*H') *(G'-H*Pn*F')
+ -1
+P0=G*R0 *G'
+ ]]>
+ </VERBATIM>
+ <P>
+ Note that this method may not converge,especially when F has poles
+ near the unit circle. Use preferably the srfaur function.</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>srfaur</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>lindquist</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>phc</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le V. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>ffilt</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="ffilt"> coefficients of FIR low-pass</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[x]=ffilt(ft,n,fl,fh) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>ft</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter type where <VERB>ft</VERB> can take the values</SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>"lp" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for low-pass filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>"hp" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for high-pass filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>"bp" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for band-pass filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>"sb" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for stop-band filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (number of filter samples desired)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fl</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real (low frequency cut-off)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fh</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real (high frequency cut-off)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of filter coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Get <VERB>n</VERB> coefficients of a FIR low-pass,
+ high-pass, band-pass, or stop-band filter.
+ For low and high-pass filters one cut-off
+ frequency must be specified whose value is
+ given in <VERB>fl</VERB>. For band-pass and stop-band
+ filters two cut-off frequencies must be
+ specified for which the lower value is in
+ <VERB>fl</VERB> and the higher value is in <VERB>fh</VERB></P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+
+ <TITLE>fft</TITLE>
+
+ <TYPE>Scilab Function</TYPE>
+
+ <DATE>April 1993</DATE>
+
+ <SHORT_DESCRIPTION name="fft">fast Fourier transform.</SHORT_DESCRIPTION>
+
+ <SHORT_DESCRIPTION name="ifft">fast Fourier transform.</SHORT_DESCRIPTION>
+
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>x=fft(a ,-1) or x=fft(a)</CALLING_SEQUENCE_ITEM>
+
+ <CALLING_SEQUENCE_ITEM>x=fft(a,1) or x=ifft(a)</CALLING_SEQUENCE_ITEM>
+
+ <CALLING_SEQUENCE_ITEM>x=fft(a,-1,dim,incr)</CALLING_SEQUENCE_ITEM>
+
+ <CALLING_SEQUENCE_ITEM>x=fft(a,1,dim,incr)</CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector. Real or complex matrix (2-dim
+ fft)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>a</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector, matrix or multidimensionnal
+ array.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>dim</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: integer</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>incr</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: integer</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+
+ <DESCRIPTION>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label="Short syntax ">
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label="direct">
+ <P><VERB>x=fft(a,-1)</VERB> or <VERB>x=fft(a)</VERB> gives a
+ direct transform.</P>
+
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label="single variate">
+ <P>If <VERB>a</VERB> is a vector a single variate direct FFT
+ is computed that is:</P>
+
+ <P>x(k)=sum over m from 1 to n of
+ a(m)*exp(-2i*pi*(m-1)*(k-1)/n)</P>
+
+ <P>for k varying from 1 to n (n=size of vector
+ <VERB>a</VERB>).</P>
+
+ <P>(the <VERB>-1</VERB> argument refers to the sign of the
+ exponent..., NOT to "inverse"),</P>
+ </DESCRIPTION_ITEM>
+
+ <DESCRIPTION_ITEM label="multivariate">
+ <P>If <VERB>a</VERB> is a matrix or or a multidimensionnal
+ array a multivariate direct FFT is performed.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+
+ <DESCRIPTION_ITEM label="inverse">
+ <P><VERB>a=fft(x,1)</VERB> or <VERB>a=ifft(x)</VERB>performs the
+ inverse transform normalized by <VERB>1/n</VERB>.</P>
+
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label="single variate">
+ <P>If <VERB>a</VERB> is a vector a single variate inverse FFT
+ is computed</P>
+ </DESCRIPTION_ITEM>
+
+ <DESCRIPTION_ITEM label="multivariate">
+ <P>If <VERB>a</VERB> is a matrix or or a multidimensionnal
+ array a multivariate inverse FFT is performed.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+
+ <DESCRIPTION_ITEM label="Long syntax for multidimensional FFT">
+ <P><VERB>x=fft(a,-1,dim,incr)</VERB> allows to perform an
+ multidimensional fft.</P>
+
+ <P>If a is a real or complex vector implicitly indexed by
+ <VERB>j1,j2,..,jp</VERB> i.e. <VERB>a(j1,j2,..,jp)</VERB> where
+ <VERB>j1</VERB> lies in <VERB>1:dim(1),</VERB> <VERB>j2</VERB> in
+ <VERB>1:dim(2),...</VERB> one gets a p-variate FFT by calling p times
+ <VERB>fft</VERB> as follows</P>
+
+ <VERBATIM>incrk=1; x=a; for k=1:p x=fft(x ,-1,dim(k),incrk)
+ incrk=incrk*dim(k) end</VERBATIM>
+
+ <P>where <VERB>dimk</VERB> is the dimension of the current variable
+ w.r.t which one is integrating and <VERB>incrk</VERB> is the increment
+ which separates two successive <VERB>jk</VERB> elements in
+ <VERB>a</VERB>.</P>
+
+ <P>In particular,if <VERB>a</VERB> is an mxn matrix,
+ <VERB>x=fft(a,-1)</VERB> is equivalent to the two instructions:</P>
+
+ <P><VERB>a1=fft(a,-1,m,1)</VERB> and
+ <VERB>x=fft(a1,-1,n,m)</VERB>.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION>
+
+ <EXAMPLE><![CDATA[
+
+ //Comparison with explicit formula
+ //----------------------------------
+ a=[1;2;3];n=size(a,'*');
+ norm(1/n*exp(2*%i*%pi*(0:n-1)'.*.(0:n-1)/n)*a -fft(a,1))
+ norm(exp(-2*%i*%pi*(0:n-1)'.*.(0:n-1)/n)*a -fft(a,-1))
+
+ //Frequency components of a signal
+ //----------------------------------
+ // build a noides signal sampled at 1000hz containing to pure frequencies
+ // at 50 and 70 Hz
+ sample_rate=1000;
+ t = 0:1/sample_rate:0.6;
+ N=size(t,'*'); //number of samples
+ s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+
+ y=fft(s);
+ //the fft response is symetric we retain only the first N/2 points
+ f=sample_rate*(0:(N/2))/N; //associated frequency vector
+ n=size(f,'*')
+ clf()
+ plot2d(f,abs(y(1:n)))
+
+ ]]></EXAMPLE>
+
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>corr</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+
+ <TITLE>fft2</TITLE>
+
+ <TYPE>Scilab Function</TYPE>
+
+ <DATE>November 2005</DATE>
+
+ <SHORT_DESCRIPTION name="fft2">two-dimension fast Fourier
+ transform</SHORT_DESCRIPTION>
+
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>y=fft2(x)</CALLING_SEQUENCE_ITEM>
+
+ <CALLING_SEQUENCE_ITEM>y=fft2(x,n,m)</CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: a vector/matrix/array (Real or Complex)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: a vector/matrix/array (Real or Complex)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of rows.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of columns.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+
+ <DESCRIPTION>
+ <VERBATIM>This functions performs the two-dimension discrete Fourier
+ transform.</VERBATIM>
+
+ <P><VERB>y=fft2(x)</VERB>: y and x have the same size</P>
+
+ <P><VERB>y=fft2(x,m,n):</VERB> If <VERB>m</VERB> (respectively
+ <VERB>n</VERB>) is less than the rows number (respectively columns) of
+ <VERB>x</VERB> then the <VERB>x</VERB> rows number (resp. columns) is
+ truncated, else if m (resp. <VERB>n</VERB>) is more than the rows number
+ (resp. columns) of <VERB>x</VERB> then <VERB>x</VERB> rows are completed
+ by zero (resp. columns) .</P>
+
+ <P>if <VERB>x</VERB> is a matrix then <VERB>y</VERB> is a matrix, if
+ <VERB>x</VERB> is a hypermatrix then <VERB>y</VERB> is a hypermatrix, with
+ the size of the first dimension of <VERB>y</VERB> is equal to
+ <VERB>m</VERB>, the size of the second dimension of <VERB>y</VERB> is
+ equal to <VERB>n</VERB>, the size of the ith dimension of <VERB>y</VERB>
+ (for i>2, case hypermatrix) equal to the size of the ith dimension of
+ <VERB>x</VERB>. (i.e size(y,1)=m, size(y,2)=n and size(y,i)=size(x,i) for
+ i>2)</P>
+ </DESCRIPTION>
+
+ <EXAMPLE><![CDATA[
+//Comparison with explicit formula
+a=[1 2 3 ;4 5 6 ;7 8 9 ;10 11 12]
+m=size(a,1)
+n=size(a,2)
+// fourier transform along the rows
+for i=1:n
+a1(:,i)=exp(-2*%i*%pi*(0:m-1)'.*.(0:m-1)/m)*a(:,i)
+end
+// fourier transform along the columns
+for j=1:m
+a2temp=exp(-2*%i*%pi*(0:n-1)'.*.(0:n-1)/n)*(a1(j,:)).'
+a2(j,:)=a2temp.'
+end
+norm(a2-fft2(a))
+
+
+
+ ]]></EXAMPLE>
+
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>fftshift</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>2001</DATE>
+ <SHORT_DESCRIPTION name="fftshift"> rearranges the fft output, moving the zero frequency to the center of the spectrum</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>y=fftshift(x [,job]) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector or matrix.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector or matrix.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>job</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer, dimension selection, or string 'all'</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ if <VERB>x</VERB> results of an fft computation <VERB>y= fftshift(x)</VERB> or <VERB>y= fftshift(x,"all")</VERB> moves the zero frequency component to the center
+ of the spectrum, which is sometimes a more convenient form.</P>
+ <P>
+ If <VERB>x</VERB> is a vector of size n, y is the vector <VERB>x([n/2+1:n,1:n/2])</VERB></P>
+ <P>
+ If <VERB>x</VERB> is an <VERB>m</VERB> by <VERB>n</VERB> matrix <VERB>y</VERB> is the matrix
+ <VERB>x([m/2+1:n,1:m/2],[n/2+1:n,1:n/2])</VERB>.</P>
+ <VERBATIM>
+<![CDATA[
+ [x11 x12] [x22 x21]
+x=[ ] gives y=[ ]
+ [x21 x22] [x12 x11]
+ ]]>
+ </VERBATIM>
+ <P><VERB>y= fftshift(x,n)</VERB> make the swap only along the <VERB>n</VERB>th dimension</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//make a signal
+t=0:0.1:1000;
+x=3*sin(t)+8*sin(3*t)+0.5*sin(5*t)+3*rand(t);
+//compute the fft
+y=fft(x,-1);
+//display
+xbasc();
+subplot(2,1,1);plot2d(abs(y))
+subplot(2,1,2);plot2d(fftshift(abs(y)))
+
+//make a 2D image
+t=0:0.1:30;
+x=3*sin(t')*cos(2*t)+8*sin(3*t')*sin(5*t)+..
+ 0.5*sin(5*t')*sin(5*t)+3*rand(t')*rand(t);
+//compute the fft
+y=fft(x,-1);
+//display
+xbasc();
+xset('colormap',hotcolormap(256))
+subplot(2,1,1);Matplot(abs(y))
+subplot(2,1,2);Matplot(fftshift(abs(y)))
+
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>filter</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="filter"> modelling filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y,xt]=filter(n,F,H,Rt,T) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of computed points.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>F, H</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: relevant matrices of the Markovian model.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>Rt, T</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain matrices.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output of the filter.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter process.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ This function computes the modelling filter</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>faurre</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le V. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>find_freq</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="find_freq"> parameter compatibility for elliptic filter design</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[m]=find_freq(epsilon,A,n) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>epsilon</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: passband ripple</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>A</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: stopband attenuation</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: frequency needed for construction of elliptic filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Search for m such that <VERB>n=K(1-m1)K(m)/(K(m1)K(1-m))</VERB>
+ with</P>
+ <P><VERB>m1=(epsilon*epsilon)/(A*A-1)</VERB>;</P>
+ <P>
+ If <VERB>m = omegar^2/omegac^2</VERB>, the parameters
+ <VERB>epsilon,A,omegac,omegar</VERB> and <VERB>n</VERB> are then
+ compatible for defining a prototype elliptic filter.
+ Here, <VERB>K=%k(m)</VERB> is the complete elliptic integral with parameter <VERB>m</VERB>.</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>%k</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>findm</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="findm"> for elliptic filter design</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[m]=findm(chi) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <DESCRIPTION>
+ <P>
+ Search for <VERB>m</VERB> such that <VERB>chi = %k(1-m)/%k(m)</VERB>
+ (For use with <VERB>find_freq</VERB>).</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>%k</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F. D.; </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>frfit</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="frfit"> frequency response fit</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>sys=frfit(w,fresp,order) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[num,den]=frfit(w,fresp,order) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>sys=frfit(w,fresp,order,weight) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[num,den]=frfit(w,fresp,order,weight) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>w</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive real vector of frequencies (Hz)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fresp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: complex vector of frequency responses (same size as <VERB>w</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>order</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (required order, degree of <VERB>den</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>weight</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive real vector (default value <VERB>ones(w)</VERB>).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>num,den</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: stable polynomials</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P><VERB>sys=frfit(w,fresp,order,weight)</VERB> returns a bi-stable transfer function
+ <VERB>G(s)=sys=num/den</VERB>, of of given <VERB>order</VERB> such that
+ its frequency response <VERB>G(w(i))</VERB> matches <VERB>fresp(i)</VERB>, i.e.
+ <VERB>freq(num,den,%i*w)</VERB> should be close to <VERB>fresp</VERB>.
+ <VERB>weight(i)</VERB> is the weight given to <VERB>w(i)</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+w=0.01:0.01:2;s=poly(0,'s');
+G=syslin('c',2*(s^2+0.1*s+2), (s^2+s+1)*(s^2+0.3*s+1));
+fresp=repfreq(G,w);
+Gid=frfit(w,fresp,4);
+frespfit=repfreq(Gid,w);
+bode(w,[fresp;frespfit])
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>frep2tf</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>factors</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>cepstrum</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>mrfit</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>freq</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>calfrq</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>frmag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="frmag"> magnitude of FIR and IIR filters</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xm,fr]=frmag(num[,den],npts) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>npts</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (number of points in frequency response)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xm</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: mvector of magnitude of frequency response at the points <VERB>fr</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fr</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: points in the frequency domain where magnitude is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>num</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: if <VERB>den</VERB> is omitted vector coefficients/polynomial/rational polynomial of filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>num</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: if <VERB>den</VERB> is given vector coefficients/polynomial of filter numerator</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>den</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector coefficients/polynomial of filter denominator</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ calculates the magnitude of the frequency responses of
+ FIR and IIR filters. The filter description can be
+ one or two vectors of coefficients, one or two polynomials,
+ or a rational polynomial.</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>fsfirlin</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="fsfirlin"> design of FIR, linear phase filters, frequency sampling technique</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hst]=fsfirlin(hd,flag) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>hd</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of desired frequency response samples</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: is equal to 1 or 2, according to the choice of type 1 or type 2 design</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hst</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector giving the approximated continuous response on a dense grid of frequencies</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function for the design of FIR, linear phase filters
+ using the frequency sampling technique</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//
+//Example of how to use the fsfirlin macro for the design
+//of an FIR filter by a frequency sampling technique.
+//
+//Two filters are designed : the first (response hst1) with
+//abrupt transitions from 0 to 1 between passbands and stop
+//bands; the second (response hst2) with one sample in each
+//transition band (amplitude 0.5) for smoothing.
+//
+hd=[zeros(1,15) ones(1,10) zeros(1,39)];//desired samples
+hst1=fsfirlin(hd,1);//filter with no sample in the transition
+hd(15)=.5;hd(26)=.5;//samples in the transition bands
+hst2=fsfirlin(hd,1);//corresponding filter
+pas=1/prod(size(hst1))*.5;
+fg=0:pas:.5;//normalized frequencies grid
+plot2d([1 1].*.fg(1:257)',[hst1' hst2']);
+// 2nd example
+hd=[0*ones(1,15) ones(1,10) 0*ones(1,39)];//desired samples
+hst1=fsfirlin(hd,1);//filter with no sample in the transition
+hd(15)=.5;hd(26)=.5;//samples in the transition bands
+hst2=fsfirlin(hd,1);//corresponding filter
+pas=1/prod(size(hst1))*.5;
+fg=0:pas:.5;//normalized frequencies grid
+n=prod(size(hst1))
+plot(fg(1:n),hst1);
+plot2d(fg(1:n)',hst2',[3],"000");
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>ffilt</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>wfir</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le Vey</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>group</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="group"> group delay for digital filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[tg,fr]=group(npts,a1i,a2i,b1i,b2i) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>npts</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : number of points desired in calculation of group delay</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>a1i</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: in coefficient, polynomial, rational polynomial, or cascade polynomial form this variable is the transfer function of the filter. In coefficient polynomial form this is a vector of coefficients (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>a2i</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: in coeff poly form this is a vector of coeffs</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>b1i</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: in coeff poly form this is a vector of coeffs</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>b2i</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: in coeff poly form this is a vector of coeffs</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>tg</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: values of group delay evaluated on the grid fr</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fr</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: grid of frequency values where group delay is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Calculate the group delay of a digital filter
+ with transfer function h(z).</P>
+ <P>
+ The filter specification can be in coefficient form,
+ polynomial form, rational polynomial form, cascade
+ polynomial form, or in coefficient polynomial form.</P>
+ <P>
+ In the coefficient polynomial form the transfer function is
+ formulated by the following expression</P>
+ <P>
+ <VERB>h(z)=prod(a1i+a2i*z+z**2)/prod(b1i+b2i*z+z^2)</VERB>
+ </P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+z=poly(0,'z');
+h=z/(z-.5);
+[tg,fr]=group(100,h);
+plot(fr,tg)
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>hank</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="hank"> covariance to hankel matrix</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hk]=hank(m,n,cov) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of bloc-rows</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of bloc-columns</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cov</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: sequence of covariances; it must be given as :[R0 R1 R2...Rk]</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hk</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: computed hankel matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ this function builds the hankel matrix of size <VERB>(m*d,n*d)</VERB>
+ from the covariance sequence of a vector process</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Example of how to use the hank macro for
+//building a Hankel matrix from multidimensional
+//data (covariance or Markov parameters e.g.)
+//
+//This is used e.g. in the solution of normal equations
+//by classical identification methods (Instrumental Variables e.g.)
+//
+//1)let's generate the multidimensional data under the form :
+// C=[c_0 c_1 c_2 .... c_n]
+//where each bloc c_k is a d-dimensional matrix (e.g. the k-th correlation
+//of a d-dimensional stochastic process X(t) [c_k = E(X(t) X'(t+k)], '
+//being the transposition in scilab)
+//
+//we take here d=2 and n=64
+//
+c=rand(2,2*64)
+//
+//generate the hankel matrix H (with 4 bloc-rows and 5 bloc-columns)
+//from the data in c
+//
+H=hank(4,5,c);
+//
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>toeplitz</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le Vey</AUTHOR>
+</MAN>
--- /dev/null
+mode(-1); //force silent execution\r
+path=get_absolute_file_path('helpbuildereng.sce');//get the absolute path of this file\r
+add_help_chapter("Signal Processing",path);//add help chapter\r
+xmltohtml(path,"Signal Processing");\r
+//clear the variable stack\r
+clear path add_help_chapter get_absolute_file_path;
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>hilb</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="hilb"> Hilbert transform</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xh]=hilb(n[,wtype][,par]) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: odd integer : number of points in filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wtype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : window type <VERB>('re','tr','hn','hm','kr','ch')</VERB> (default <VERB>='re'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>par</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: window parameter for <VERB>wtype='kr' or 'ch'</VERB> default <VERB>par=[0 0]</VERB> see the function window for more help</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xh</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Hilbert transform</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ returns the first n points of the
+ Hilbert transform centred around the origin.</P>
+ <P>
+ That is, <VERB>xh=(2/(n*pi))*(sin(n*pi/2))^2</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+plot(hilb(51))
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>iir</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="iir"> iir digital filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hz]=iir(n,ftype,fdesign,frq,delta) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter order (pos. integer)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ftype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string specifying the filter type <VERB>'lp','hp','bp','sb'</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fdesign</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string specifying the analog filter design <VERB>='butt','cheb1','cheb2','ellip'</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>frq</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 2-vector of discrete cut-off frequencies (i.e.,
+ <VERB>0<frq<.5</VERB>). For <VERB>lp</VERB> and
+ <VERB>hp</VERB> filters only <VERB>frq(1)</VERB> is used. For
+ <VERB>bp</VERB> and <VERB>sb</VERB> filters <VERB>frq(1)</VERB> is
+ the lower cut-off frequency and <VERB>frq(2)</VERB> is the upper
+ cut-off frequency</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>delta</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <P>
+ : 2-vector of error values for <VERB>cheb1, cheb2</VERB>, and
+ <VERB>ellip</VERB> filters where only <VERB>delta(1)</VERB> is used
+ for <VERB>cheb1</VERB> case, only <VERB>delta(2)</VERB> is used for
+ <VERB>cheb2</VERB> case, and <VERB>delta(1)</VERB> and
+ <VERB>delta(2)</VERB> are both used for <VERB>ellip</VERB>
+ case. <VERB>0<delta(1),delta(2)<1</VERB></P>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for <VERB>cheb1</VERB> filters <VERB>1-delta(1)<ripple<1</VERB> in passband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for <VERB>cheb2</VERB> filters <VERB>0<ripple<delta(2)</VERB> in stopband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for <VERB>ellip</VERB> filters <VERB>1-delta(1)<ripple<1</VERB> in passband and <VERB>0<ripple<delta(2)</VERB> in stopband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which designs an iir digital filter using analog filter designs.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+hz=iir(3,'bp','ellip',[.15 .25],[.08 .03]);
+[hzm,fr]=frmag(hz,256);
+plot2d(fr',hzm')
+xtitle('Discrete IIR filter band pass 0.15<fr<0.25 ',' ',' ');
+q=poly(0,'q'); //to express the result in terms of the ...
+hzd=horner(hz,1/q) //delay operator q=z^-1
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>eqfir</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>eqiir</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>iirgroup</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="iirgroup"> group delay Lp IIR filter optimization</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[lt,grad]=iirgroup(p,r,theta,omega,wt,td) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[cout,grad,ind]=iirlp(x,ind,p,[flag],lambda,omega,ad,wa,td,wt) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of the module of the poles and the zeros of the filters</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>theta</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of the argument of the poles and the zeros of the filters</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omega</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: frequencies where the filter specifications are given</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: weighting function for and the group delay</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>td</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: desired group delay</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>lt, grad</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: criterium and gradient values</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ optimization of IIR filters for the Lp criterium for the
+ the group delay. (Rabiner & Gold pp270-273).</P>
+ </DESCRIPTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>iirlp</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="iirlp"> Lp IIR filter optimization</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cost,grad,ind]=iirlp(x,ind,p,[flag],lambda,omega,ad,wa,td,wt) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 1X2 vector of the module and argument of the poles and the zeros of the filters</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : <VERB>'a'</VERB> for amplitude, 'gd' for group delay; default case for amplitude and group delay.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omega</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: frequencies where the filter specifications are given</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wa,wt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: weighting functions for the amplitude and the group delay</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>lambda</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: weighting (with <VERB>1-lambda</VERB>) of the costs (<VERB>'a'</VERB> and <VERB>'gd'</VERB> for getting the global cost.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ad, td</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: desired amplitude and group delay</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cost, grad</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: criterium and gradient values</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ optimization of IIR filters for the Lp criterium for the
+ amplitude and/or the group delay. (Rabiner & Gold pp270-273).</P>
+ </DESCRIPTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>intdec</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="intdec"> Changes sampling rate of a signal</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y]=intdec(x,lom) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input sampled signal</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>lom</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: For a 1D signal this is a scalar which gives the rate change. For a 2D signal this is a 2-Vector of sampling rate changes <VERB>lom</VERB>=(col rate change,row rate change)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Output sampled signal</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Changes the sampling rate of a 1D or 2D signal by the rates in lom</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>jmat</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="jmat"> row or column block permutation</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[j]=jmat(n,m) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of block rows or block columns of the matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: size of the (square) blocks</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ This function permutes block rows or block columns of a matrix</P>
+ </DESCRIPTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>kalm</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="kalm"> Kalman update</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[x1,p1,x,p]=kalm(y,x0,p0,f,g,h,q,r) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>f,g,h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: current system matrices</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>q, r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: covariance matrices of dynamics and observation noise</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x0,p0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: state estimate and error variance at t=0 based on data up to t=-1</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: current observation Output from the function is:</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x1,p1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: updated estimate and error covariance at t=1 based on data up to t=0</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: updated estimate and error covariance at t=0 based on data up to t=0</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which gives the Kalman update and error variance</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>lattn</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="lattn"> recursive solution of normal equations</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[la,lb]=lattn(n,p,cov) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: maximum order of the filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>p</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: fixed dimension of the MA part. If <VERB>p= -1</VERB>, the algorithm reduces to the classical Levinson recursions.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cov</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: matrix containing the <VERB>Rk</VERB>'s (<VERB>d*d</VERB> matrices for a d-dimensional process).It must be given the following way</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>la</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: list-type variable, giving the successively calculated polynomials (degree 1 to degree n),with coefficients Ak</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ solves recursively on <VERB>n</VERB> (<VERB>p</VERB> being fixed)
+ the following system (normal equations), i.e. identifies
+ the AR part (poles) of a vector ARMA(n,p) process</P>
+ <P>
+ where {<VERB>Rk;k=1,nlag</VERB>} is the sequence of empirical covariances</P>
+ </DESCRIPTION>
+ <AUTHOR>G. Le V. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>lattp</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="lattp"> lattp</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[la,lb]=lattp(n,p,cov) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <DESCRIPTION>
+ <P>
+ see lattn</P>
+ </DESCRIPTION>
+ <AUTHOR>G.Levey</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>lev</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="lev"> Yule-Walker equations (Levinson's algorithm) </SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[ar,sigma2,rc]=lev(r) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: correlation coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: auto-Regressive model parameters</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sigma2</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: scale constant</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>rc</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: reflection coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ resolve the Yule-Walker equations</P>
+ <P>
+ using Levinson's algorithm.</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>levin</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="levin"> Toeplitz system solver by Levinson algorithm (multidimensional) </SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[la,sig]=levin(n,cov) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: maximum order of the filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cov</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: matrix containing the</SP>
+ <P>
+ (d x d matrices for a d-dimensional process). It must be given the following way :
+ </P>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>la</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: list-type variable, giving the successively calculated Levinson polynomials (degree 1 to n), with coefficients <VERB>Ak</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sig</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: list-type variable, giving the successive mean-square errors.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which solves recursively on n
+ the following Toeplitz system (normal equations)</P>
+ <P>
+ where {<VERB>Rk;k=1,nlag</VERB>} is the sequence of <VERB>nlag</VERB> empirical covariances</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//We use the 'levin' macro for solving the normal equations
+//on two examples: a one-dimensional and a two-dimensional process.
+//We need the covariance sequence of the stochastic process.
+//This example may usefully be compared with the results from
+//the 'phc' macro (see the corresponding help and example in it)
+//
+//
+//1) A one-dimensional process
+// -------------------------
+//
+//We generate the process defined by two sinusoids (1Hz and 2 Hz)
+//in additive Gaussian noise (this is the observed process);
+//the simulated process is sampled at 10 Hz (step 0.1 in t, underafter).
+//
+t1=0:.1:100;rand('normal');
+y1=sin(2*%pi*t1)+sin(2*%pi*2*t1);y1=y1+rand(y1);plot(t1,y1);
+//
+//covariance of y1
+//
+nlag=128;
+c1=corr(y1,nlag);
+c1=c1';//c1 needs to be given columnwise (see the section PARAMETERS of this help)
+//
+//compute the filter for a maximum order of n=10
+//la is a list-type variable each element of which
+//containing the filters of order ranging from 1 to n; (try varying n)
+//in the d-dimensional case this is a matrix polynomial (square, d X d)
+//sig gives, the same way, the mean-square error
+//
+n=15;
+[la1,sig1]=levin(n,c1);
+//
+//verify that the roots of 'la' contain the
+//frequency spectrum of the observed process y
+//(remember that y is sampled -in our example
+//at 10Hz (T=0.1s) so that we need to retrieve
+//the original frequencies (1Hz and 2 Hz) through
+//the log and correct scaling by the frequency sampling)
+//we verify this for each filter order
+//
+for i=1:n, s1=roots(la1(i));s1=log(s1)/2/%pi/.1;
+//
+//now we get the estimated poles (sorted, positive ones only !)
+//
+s1=sort(imag(s1));s1=s1(1:i/2);end;
+//
+//the last two frequencies are the ones really present in the observed
+//process ---> the others are "artifacts" coming from the used model size.
+//This is related to the rather difficult problem of order estimation.
+//
+//2) A 2-dimensional process
+// -----------------------
+//(4 frequencies 1, 2, 3, and 4 Hz, sampled at 0.1 Hz :
+// |y_1| y_1=sin(2*Pi*t)+sin(2*Pi*2*t)+Gaussian noise
+// y=| | with :
+// |y_2| y_2=sin(2*Pi*3*t)+sin(2*Pi*4*t)+Gaussian noise
+//
+//
+d=2;dt=0.1;
+nlag=64;
+t2=0:2*%pi*dt:100;
+y2=[sin(t2)+sin(2*t2)+rand(t2);sin(3*t2)+sin(4*t2)+rand(t2)];
+c2=[];
+for j=1:2, for k=1:2, c2=[c2;corr(y2(k,:),y2(j,:),nlag)];end;end;
+c2=matrix(c2,2,128);cov=[];
+for j=1:64,cov=[cov;c2(:,(j-1)*d+1:j*d)];end;//covar. columnwise
+c2=cov;
+//
+//in the multidimensional case, we have to compute the
+//roots of the determinant of the matrix polynomial
+//(easy in the 2-dimensional case but tricky if d>=3 !).
+//We just do that here for the maximum desired
+//filter order (n); mp is the matrix polynomial of degree n
+//
+[la2,sig2]=levin(n,c2);
+mp=la2(n);determinant=mp(1,1)*mp(2,2)-mp(1,2)*mp(2,1);
+s2=roots(determinant);s2=log(s2)/2/%pi/0.1;//same trick as above for 1D process
+s2=sort(imag(s2));s2=s2(1:d*n/2);//just the positive ones !
+//
+//There the order estimation problem is seen to be much more difficult !
+//many artifacts ! The 4 frequencies are in the estimated spectrum
+//but beneath many non relevant others.
+//
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>phc</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le Vey</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>lgfft</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="lgfft"> utility for fft</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y]=lgfft(x) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ returns the lowest power of 2 larger than <VERB>size(x)</VERB> (for FFT use).</P>
+ </DESCRIPTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>lindquist</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="lindquist"> Lindquist's algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[P,R,T]=lindquist(n,H,F,G,R0) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>H, F, G</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: estimated triple from the covariance sequence of <VERB>y</VERB>.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>R0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: E(yk*yk')</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>P</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: solution of the Riccati equation after n iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>R, T</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain matrices of the filter.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ computes iteratively the minimal solution of the algebraic
+ Riccati equation and gives the matrices <VERB>R</VERB> and <VERB>T</VERB> of the
+ filter model, by the Lindquist's algorithm.</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>srfaur</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>faurre</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>phc</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le V. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>mese</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="mese"> maximum entropy spectral estimation</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[sm,fr]=mese(x [,npts]); </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Input sampled data sequence</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>npts</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Optional parameter giving number of points of <VERB>fr</VERB> and <VERB>sm</VERB> (default is 256)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sm</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Samples of spectral estimate on the frequency grid <VERB>fr</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fr</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: npts equally spaced frequency samples in <VERB>[0,.5)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Calculate the maximum entropy spectral estimate of <VERB>x</VERB></P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>mfft</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="mfft"> multi-dimensional fft</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xk]=mfft(x,flag,dim) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: <VERB>x(i,j,k,...)</VERB> input signal in the form of a row vector whose values are arranged so that the i index runs the quickest, followed by the j index, etc.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: (-1) FFT or (1) inverse FFT</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>dim</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: dimension vector which gives the number of values of <VERB>x</VERB> for each of its indices</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xk</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output of multidimensional fft in same format as for <VERB>x</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ FFT for a multi-dimensional signal</P>
+ <P>
+ For example for a three dimensional vector which has three points
+ along its first dimension, two points along its second
+ dimension and three points along its third dimension the row
+ vector is arranged as follows</P>
+ <VERBATIM>
+<![CDATA[
+ x=[x(1,1,1),x(2,1,1),x(3,1,1),
+ x(1,2,1),x(2,2,1),x(3,2,1),
+ x(1,1,2),x(2,1,2),x(3,1,2),
+ x(1,2,2),x(2,2,2),x(3,2,2),
+ x(1,1,3),x(2,1,3),x(3,1,3),
+ x(1,2,3),x(2,2,3),x(3,2,3)]
+ ]]>
+ </VERBATIM>
+ <P>
+ and the <VERB>dim</VERB> vector is: <VERB>dim=[3,2,3]</VERB></P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>mrfit</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="mrfit"> frequency response fit</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>sys=mrfit(w,mag,order) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[num,den]=mrfit(w,mag,order) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>sys=mrfit(w,mag,order,weight) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[num,den]=mrfit(w,mag,order,weight) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>w</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive real vector of frequencies (Hz)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>mag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector of frequency responses magnitude (same size as <VERB>w</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>order</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (required order, degree of <VERB>den</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>weight</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive real vector (default value <VERB>ones(w)</VERB>).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>num,den</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: stable polynomials</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P><VERB>sys=mrfit(w,mag,order,weight)</VERB> returns a bi-stable transfer function
+ <VERB>G(s)=sys=num/den</VERB>, of of given <VERB>order</VERB> such that
+ its frequency response magnitude <VERB>abs(G(w(i)))</VERB>
+ matches <VERB>mag(i)</VERB> i.e. <VERB>abs(freq(num,den,%i*w))</VERB> should be
+ close to <VERB>mag</VERB>.
+ <VERB>weight(i)</VERB> is the weigth given to <VERB>w(i)</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+w=0.01:0.01:2;s=poly(0,'s');
+G=syslin('c',2*(s^2+0.1*s+2),(s^2+s+1)*(s^2+0.3*s+1)); // syslin('c',Num,Den);
+fresp=repfreq(G,w);
+mag=abs(fresp);
+Gid=mrfit(w,mag,4);
+frespfit=repfreq(Gid,w);
+plot2d([w',w'],[mag(:),abs(frespfit(:))])
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>cepstrum</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>frfit</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>freq</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>calfrq</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>%asn</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="%asn"> elliptic integral</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y]=%asn(x,m) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: upper limit of integral (<VERB>x>0</VERB>) (can be a vector)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: parameter of integral (<VERB>0<m<1</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: value of the integral</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Calculates the elliptic integral</P>
+ <P>
+ If <VERB>x</VERB> is a vector, <VERB>y</VERB> is a vector of same dimension as <VERB>x</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+m=0.8;z=%asn(1/sqrt(m),m);K=real(z);Ktilde=imag(z);
+x2max=1/sqrt(m);
+x1=0:0.05:1;x2=1:((x2max-1)/20):x2max;x3=x2max:0.05:10;
+x=[x1,x2,x3];
+y=%asn(x,m);
+rect=[0,-Ktilde,1.1*K,2*Ktilde];
+plot2d(real(y)',imag(y)',1,'011',' ',rect)
+//
+deff('y=f(t)','y=1/sqrt((1-t^2)*(1-m*t^2))');
+intg(0,0.9,f)-%asn(0.9,m) //Works for real case only!
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>%k</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="%k"> Jacobi's complete elliptic integral</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[K]=%k(m) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: parameter of the elliptic integral <VERB>0<m<1</VERB> (<VERB>m</VERB> can be a vector)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>K</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: value of the elliptic integral from 0 to 1 on the real axis</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Calculates Jacobi's complete elliptic integral
+ of the first kind :</P>
+ </DESCRIPTION>
+ <SECTION label="References">
+ <P>
+ Abramowitz and Stegun page 598</P>
+ </SECTION>
+ <EXAMPLE>
+<![CDATA[
+m=0.4;
+%asn(1,m)
+%k(m)
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>%asn</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F.D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>%sn</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="%sn"> Jacobi 's elliptic function</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y]=%sn(x,m) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a point inside the fundamental rectangle defined by the elliptic integral; <VERB>x</VERB> is a vector of complex numbers</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: parameter of the elliptic integral (<VERB>0<m<1</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: result</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Jacobi 's sn elliptic function with parameter <VERB>m</VERB>: the inverse
+ of the elliptic integral for the parameter <VERB>m</VERB>.</P>
+ <P>
+ The amplitude am is computed in fortran and
+ the addition formulas for elliptic functions are applied</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+m=0.36;
+K=%k(m);
+P=4*K; //Real period
+real_val=0:(P/50):P;
+plot(real_val,real(%sn(real_val,m)))
+xbasc();
+KK=%k(1-m);
+Ip=2*KK;
+ima_val1=0:(Ip/50):KK-0.001;
+ima_val2=(KK+0.05):(Ip/25):(Ip+KK);
+z1=%sn(%i*ima_val1,m);z2=%sn(%i*ima_val2,m);
+plot2d([ima_val1',ima_val2'],[imag(z1)',imag(z2)']);
+xgrid(3)
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>%asn</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>%k</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>phc</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="phc"> Markovian representation</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[H,F,G]=phc(hk,d,r) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>hk</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: hankel matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>d</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: dimension of the observation</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: desired dimension of the state vector for the approximated model</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>H, F, G</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: relevant matrices of the Markovian model</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Function which computes the matrices <VERB>H, F, G</VERB> of a Markovian
+ representation by the principal hankel
+ component approximation method, from the hankel matrix built
+ from the covariance sequence of a stochastic process.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//
+//This example may usefully be compared with the results from
+//the 'levin' macro (see the corresponding help and example)
+//
+//We consider the process defined by two sinusoids (1Hz and 2 Hz)
+//in additive Gaussian noise (this is the observation);
+//the simulated process is sampled at 10 Hz.
+//
+t=0:.1:100;rand('normal');
+y=sin(2*%pi*t)+sin(2*%pi*2*t);y=y+rand(y);plot(t,y)
+//
+//covariance of y
+//
+nlag=128;
+c=corr(y,nlag);
+//
+//hankel matrix from the covariance sequence
+//(we can choose to take more information from covariance
+//by taking greater n and m; try it to compare the results !
+//
+n=20;m=20;
+h=hank(n,m,c);
+//
+//compute the Markov representation (mh,mf,mg)
+//We just take here a state dimension equal to 4 :
+//this is the rather difficult problem of estimating the order !
+//Try varying ns !
+//(the observation dimension is here equal to one)
+ns=4;
+[mh,mf,mg]=phc(h,1,ns);
+//
+//verify that the spectrum of mf contains the
+//frequency spectrum of the observed process y
+//(remember that y is sampled -in our example
+//at 10Hz (T=0.1s) so that we need
+//to retrieve the original frequencies through the log
+//and correct scaling by the frequency sampling)
+//
+s=spec(mf);s=log(s);
+s=s/2/%pi/.1;
+//
+//now we get the estimated spectrum
+imag(s),
+//
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>levin</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>pspect</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="pspect"> cross-spectral estimate between 2 series</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[sm,cwp]=pspect(sec_step,sec_leng,wtype,x,y,wpar) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data if vector, amount of input data if scalar</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data if vector, amount of input data if scalar</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sec_step</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: offset of each data window</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sec_leng</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: length of each data window</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wtype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: window type <VERB>(re,tr,hm,hn,kr,ch)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wpar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: optional parameters for <VERB>wtype='kr', wpar>0</VERB> for <VERB>wtype='ch', 0<wpar(1)<.5, wpar(2)>0</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sm</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: power spectral estimate in the interval <VERB>[0,1]</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cwp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: unspecified Chebyshev window parameter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Cross-spectral estimate between <VERB>x</VERB> and <VERB>y</VERB> if both are given
+ and auto-spectral estimate of <VERB>x</VERB> otherwise.
+ Spectral estimate obtained using the modified periodogram method.</P>
+ </DESCRIPTION>
+ <SECTION label="Reference">
+ <P>
+ Digital Signal Processing by Oppenheim and Schafer</P>
+ </SECTION>
+ <EXAMPLE>
+<![CDATA[
+rand('normal');rand('seed',0);
+x=rand(1:1024-33+1);
+//make low-pass filter with eqfir
+nf=33;bedge=[0 .1;.125 .5];des=[1 0];wate=[1 1];
+h=eqfir(nf,bedge,des,wate);
+//filter white data to obtain colored data
+h1=[h 0*ones(1:maxi(size(x))-1)];
+x1=[x 0*ones(1:maxi(size(h))-1)];
+hf=fft(h1,-1); xf=fft(x1,-1);yf=hf.*xf;y=real(fft(yf,1));
+//plot magnitude of filter
+//h2=[h 0*ones(1:968)];hf2=fft(h2,-1);hf2=real(hf2.*conj(hf2));
+//hsize=maxi(size(hf2));fr=(1:hsize)/hsize;plot(fr,log(hf2));
+//pspect example
+sm=pspect(100,200,'tr',y);smsize=maxi(size(sm));fr=(1:smsize)/smsize;
+plot(fr,log(sm));
+rand('unif');
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>cspect</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>REMEZ</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="remez"> Remez's algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[an]=remez(nc,fg,ds,wt) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>nc</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of cosine functions</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fg,ds,wt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vectors</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fg</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: grid of frequency points in [0,.5)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ds</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: desired magnitude on grid <VERB>fg</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: weighting function on error on grid <VERB>fg</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ minimax approximation of a frequency domain magnitude response.
+ The approximation takes the form</P>
+ <VERBATIM>
+<![CDATA[
+ h = sum[a(n)*cos(wn)]
+ ]]>
+ </VERBATIM>
+ <P>
+ An FIR, linear-phase filter
+ can be obtained from the the output of <VERB>remez</VERB> by using the
+ following commands:</P>
+ <VERBATIM>
+<![CDATA[
+ hn(1:nc-1)=an(nc:-1:2)/2;
+ hn(nc)=an(1);
+ hn(nc+1:2*nc-1)=an(2:nc)/2;
+ ]]>
+ </VERBATIM>
+ <P>
+ where <VERB>an</VERB> = cosine filter coefficients</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>remezb</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>remezb</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="remezb"> Minimax approximation of magnitude response</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[an]=remezb(nc,fg,ds,wt) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>nc</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Number of cosine functions</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fg</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Grid of frequency points in [0,.5)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ds</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Desired magnitude on grid <VERB>fg</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Weighting function on error on grid <VERB>fg</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>an</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Cosine filter coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Minimax approximation of a frequency domain
+ magnitude response. The approximation takes
+ the form <VERB>h = sum[a(n)*cos(wn)]</VERB>
+ for n=0,1,...,nc. An FIR, linear-phase filter
+ can be obtained from the the output of the function
+ by using the following commands</P>
+ <VERBATIM>
+<![CDATA[
+ hn(1:nc-1)=an(nc:-1:2)/2;
+ hn(nc)=an(1);
+ hn(nc+1:2*nc-1)=an(2:nc)/2;
+ ]]>
+ </VERBATIM>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+// Choose the number of cosine functions and create a dense grid
+// in [0,.24) and [.26,.5)
+nc=21;ngrid=nc*16;
+fg=.24*(0:ngrid/2-1)/(ngrid/2-1);
+fg(ngrid/2+1:ngrid)=fg(1:ngrid/2)+.26*ones(1:ngrid/2);
+// Specify a low pass filter magnitude for the desired response
+ds(1:ngrid/2)=ones(1:ngrid/2);
+ds(ngrid/2+1:ngrid)=zeros(1:ngrid/2);
+// Specify a uniform weighting function
+wt=ones(fg);
+// Run remezb
+an=remezb(nc,fg,ds,wt)
+// Make a linear phase FIR filter
+hn(1:nc-1)=an(nc:-1:2)/2;
+hn(nc)=an(1);
+hn(nc+1:2*nc-1)=an(2:nc)/2;
+// Plot the filter's magnitude response
+plot(.5*(0:255)/256,frmag(hn,256));
+//////////////
+// Choose the number of cosine functions and create a dense grid in [0,.5)
+nc=21; ngrid=nc*16;
+fg=.5*(0:(ngrid-1))/ngrid;
+// Specify a triangular shaped magnitude for the desired response
+ds(1:ngrid/2)=(0:ngrid/2-1)/(ngrid/2-1);
+ds(ngrid/2+1:ngrid)=ds(ngrid/2:-1:1);
+// Specify a uniform weighting function
+wt=ones(fg);
+// Run remezb
+an=remezb(nc,fg,ds,wt)
+// Make a linear phase FIR filter
+hn(1:nc-1)=an(nc:-1:2)/2;
+hn(nc)=an(1);
+hn(nc+1:2*nc-1)=an(2:nc)/2;
+// Plot the filter's magnitude response
+plot(.5*(0:255)/256,frmag(hn,256));
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>eqfir</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>rpem</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="rpem"> RPEM estimation</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[w1,[v]]=rpem(w0,u0,y0,[lambda,[k,[c]]]) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>a,b,c</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: <VERB>a=[a(1),...,a(n)], b=[b(1),...,b(n)], c=[c(1),...,c(n)]</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>w0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: <VERB>list(theta,p,phi,psi,l)</VERB> where:</SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>theta</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: [a,b,c] is a real vector of order <VERB>3*n</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>p</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: (3*n x 3*n) real matrix.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>phi,psi,l</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector of dimension <VERB>3*n</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ <P>
+ During the first call on can take:
+ </P>
+ <VERBATIM>
+<![CDATA[
+theta=phi=psi=l=0*ones(1,3*n). p=eye(3*n,3*n)
+ ]]>
+ </VERBATIM>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>u0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector of inputs (arbitrary size) (if no input take <VERB>u0=[ ]</VERB>).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of outputs (same dimension as <VERB>u0</VERB> if <VERB>u0</VERB> is not empty). (<VERB>y0(1)</VERB> is not used by rpem).</SP>
+ <P>
+ If the time domain is <VERB>(t0,t0+k-1)</VERB> the <VERB>u0</VERB> vector contains the inputs
+ </P>
+ <P><VERB>u(t0),u(t0+1),..,u(t0+k-1)</VERB> and <VERB>y0</VERB> the outputs
+ </P>
+ <P>
+ <VERB>y(t0),y(t0+1),..,y(t0+k-1)</VERB>
+ </P>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Recursive estimation of parameters in an ARMAX model.
+ Uses Ljung-Soderstrom recursive prediction error method.
+ Model considered is the following:
+ </P>
+ <VERBATIM>
+<![CDATA[
+y(t)+a(1)*y(t-1)+...+a(n)*y(t-n)=
+b(1)*u(t-1)+...+b(n)*u(t-n)+e(t)+c(1)*e(t-1)+...+c(n)*e(t-n)
+ ]]>
+ </VERBATIM>
+ <P>
+ </P>
+ <P>
+ The effect of this command is to update the estimation of
+ unknown parameter <VERB>theta=[a,b,c]</VERB> with
+ </P>
+ <P><VERB>a=[a(1),...,a(n)], b=[b(1),...,b(n)], c=[c(1),...,c(n)]</VERB>.
+ </P>
+ </DESCRIPTION>
+ <SECTION label="Optional parameters">
+ <ITEMIZE>
+ <ITEM label="lambda">
+ <SP>: optional parameter (forgetting constant) choosed close to 1 as convergence occur:</SP>
+ <P><VERB>lambda=[lambda0,alfa,beta]</VERB> evolves according to :</P>
+ <VERBATIM>
+<![CDATA[
+lambda(t)=alfa*lambda(t-1)+beta
+ ]]>
+ </VERBATIM>
+ <P>
+ with <VERB>lambda(0)=lambda0</VERB></P>
+ <P><VERB>k</VERB> : contraction factor to be chosen close to 1 as convergence occurs.</P>
+ <P><VERB>k=[k0,mu,nu]</VERB> evolves according to:</P>
+ <VERBATIM>
+<![CDATA[
+k(t)=mu*k(t-1)+nu
+ ]]>
+ </VERBATIM>
+ <P>
+ with <VERB>k(0)=k0</VERB>.</P>
+ <P><VERB>c</VERB> : large parameter.(<VERB>c=1000</VERB> is the default value).</P>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Output parameters:">
+ <P><VERB>w1</VERB>: update for <VERB>w0</VERB>.</P>
+ <P><VERB>v</VERB>: sum of squared prediction errors on <VERB>u0, y0</VERB>.(optional).</P>
+ <P>
+ In particular <VERB>w1(1)</VERB> is the new estimate of <VERB>theta</VERB>. If a new sample <VERB>u1, y1</VERB> is available the update is obtained by:</P>
+ <P><VERB>[w2,[v]]=rpem(w1,u1,y1,[lambda,[k,[c]]])</VERB>. Arbitrary large series can thus be treated.</P>
+ </SECTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>sinc</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="sinc"> samples of sinc function</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[x]=sinc(n,fl) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of samples</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fl</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: cut-off frequency of the associated low-pass filter in Hertz.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: samples of the sinc function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Calculate n samples of the function <VERB>sin(2*pi*fl*t)/(pi*t)</VERB>
+ for <VERB>t=-(n-1)/2:(n-1)/2</VERB> (i.e. centred around the origin).</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+plot(sinc(100,0.1))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>sincd</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. B.; </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>sincd</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="sincd"> digital sinc function or Direchlet kernel</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[s]=sincd(n,flag) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: if <VERB>flag = 1</VERB> the function is centred around the origin; if <VERB>flag = 2</VERB> the function is delayed by <VERB>%pi/(2*n)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>s</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of values of the function on a dense grid of frequencies</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which calculates the function <VERB>Sin(N*x)/N*Sin(x)</VERB></P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+plot(sincd(10,1))
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>G. Le V. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>srfaur</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="srfaur"> square-root algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[p,s,t,l,rt,tt]=srfaur(h,f,g,r0,n,p,s,t,l) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>h, f, g</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: convenient matrices of the state-space model.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>r0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: E(yk*yk').</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>p</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: estimate of the solution after n iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>s, t, l</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: intermediate matrices for successive iterations;</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>rt, tt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain matrices of the filter model after <VERB>n</VERB> iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>p, s, t, l</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: may be given as input if more than one recursion is desired (evaluation of intermediate values of <VERB>p</VERB>).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ square-root algorithm for the algebraic Riccati equation.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//GENERATE SIGNAL
+x=%pi/10:%pi/10:102.4*%pi;
+rand('seed',0);rand('normal');
+y=[1;1]*sin(x)+[sin(2*x);sin(1.9*x)]+rand(2,1024);
+//COMPUTE CORRELATIONS
+c=[];for j=1:2,for k=1:2,c=[c;corr(y(k,:),y(j,:),64)];end;end
+c=matrix(c,2,128);
+//FINDING H,F,G with 6 states
+hk=hank(20,20,c);
+[H,F,G]=phc(hk,2,6);
+//SOLVING RICCATI EQN
+r0=c(1:2,1:2);
+[P,s,t,l,Rt,Tt]=srfaur(H,F,G,r0,200);
+//Make covariance matrix exactly symetric
+Rt=(Rt+Rt')/2
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>phc</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>faurre</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>lindquist</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>srkf</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="srkf"> square root Kalman filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[x1,p1]=srkf(y,x0,p0,f,h,q,r) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>f, h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: current system matrices</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>q, r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: covariance matrices of dynamics and observation noise</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x0, p0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: state estimate and error variance at t=0 based on data up to t=-1</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: current observation Output from the function is</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x1, p1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: updated estimate and error covariance at t=1 based on data up to t=0</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ square root Kalman filter algorithm</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>sskf</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="sskf"> steady-state Kalman filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xe,pe]=sskf(y,f,h,q,r,x0) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data in form <VERB>[y0,y1,...,yn]</VERB>, <VERB>yk</VERB> a column vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>f</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: system matrix dim(NxN)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: observations matrix dim(MxN)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>q</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: dynamics noise matrix dim(NxN)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: observations noise matrix dim(MxM)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: initial state estimate</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xe</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: estimated state</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>pe</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: steady-state error covariance</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ steady-state Kalman filter</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>system</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="system"> observation update</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[x1,y]=system(x0,f,g,h,q,r) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input state vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>f</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: system matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>g</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Output matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>q</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input noise covariance matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output noise covariance matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output state vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output observation</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ define system function which generates the next
+ observation given the old state.
+ System recursively calculated</P>
+ <VERBATIM>
+<![CDATA[
+ x1=f*x0+g*u
+ y=h*x0+v
+ ]]>
+ </VERBATIM>
+ <P>
+ where <VERB>u</VERB> is distributed <VERB>N(0,q)</VERB>
+ and <VERB>v</VERB> is distribute <VERB>N(0,r)</VERB>.</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>trans</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="trans"> low-pass to other filter transform</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>hzt=trans(hz,tr_type,frq) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>hzt=trans(pd,zd,gd,tr_type,frq) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>hz</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: given fiter transfert function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>pd</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Vector of given fiter poles</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zd</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Vector of given fiter zeros</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gd</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: scalar: the given fiter gain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>tr_type</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string, the type of transformation, see description for possible values </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>frq</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 2-vector of discrete cut-off frequencies (i.e.,<VERB>0<frq<.5</VERB>). For lp and hp filters only frq(1) is used. For bp and sb filters frq(1) is the lower cut-off frequency and frq(2) is the upper cut-off frequency. </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hzt</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: transformed filter transfert function.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function for transforming standardized low-pass filter given its
+ poles-zeros_gain representation into
+ one of the following filters:
+ </P>
+ <P>
+ low-pass ('lp'), the cutoff frequency is given by the first entry of frq,
+ the second one is ignored
+ </P>
+ <P>
+ high-pass ('hp'), the cutoff frequency is given by the first entry of frq,
+ the second one is ignored
+ </P>
+ <P>
+
+ band-pass ('bp'), the frequency range is given by frq(1) and frq(2)
+ </P>
+ <P>
+ stop-band ('sb') , the frequency range is given by frq(1) and frq(2).
+ </P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+clf()
+
+Hlp=iir(3,'lp','ellip',[0.1 0],[.08 .03]);
+subplot(311)
+gainplot(Hlp,1d-3,0.48)
+legend('original low pass')
+
+
+Hbp=trans(Hlp,'bp',[0.01 0.1]);
+subplot(312)
+gainplot(Hbp,1d-3,0.48)
+legend('band pass')
+
+
+Hsb=trans(Hlp,'sb',[0.01 0.1])
+subplot(313)
+gainplot(Hsb,1d-3,0.48)
+legend('stop band')
+
+
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. Bunks ; </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>wfir</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="wfir"> linear-phase FIR filters</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[wft,wfm,fr]=wfir(ftype,forder,cfreq,wtype,fpar) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>ftype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : <VERB>'lp','hp','bp','sb'</VERB> (filter type)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>forder</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Filter order (pos integer)(odd for <VERB>ftype='hp'</VERB> or <VERB>'sb'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cfreq</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 2-vector of cutoff frequencies (<VERB>0<cfreq(1),cfreq(2)<.5</VERB>) only <VERB>cfreq(1)</VERB> is used when <VERB>ftype='lp'</VERB> or <VERB>'hp'</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wtype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Window type (<VERB>'re','tr','hm','hn','kr','ch'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fpar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 2-vector of window parameters. Kaiser window <VERB>fpar(1)>0 fpar(2)=0</VERB>. Chebyshev window <VERB>fpar(1)>0, fpar(2)<0</VERB> or <VERB>fpar(1)<0, 0<fpar(2)<.5</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wft</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: time domain filter coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wfm</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: frequency domain filter response on the grid fr</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fr</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Frequency grid</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Function which makes linear-phase, FIR low-pass, band-pass,
+ high-pass, and stop-band filters
+ using the windowing technique.
+ Works interactively if called with no arguments.</P>
+ </DESCRIPTION>
+ <AUTHOR>C. Bunks</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>wiener</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="wiener"> Wiener estimate</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xs,ps,xf,pf]=wiener(y,x0,p0,f,g,h,q,r) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>f, g, h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: system matrices in the interval <VERB>[t0,tf]</VERB></SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>f</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>=<VERB>[f0,f1,...,ff]</VERB>, and <VERB>fk</VERB> is a nxn matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>g</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>=<VERB>[g0,g1,...,gf]</VERB>, and <VERB>gk</VERB> is a nxn matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>=<VERB>[h0,h1,...,hf]</VERB>, and <VERB>hk</VERB> is a mxn matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>q, r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: covariance matrices of dynamics and observation noise</SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>q</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>=<VERB>[q0,q1,...,qf]</VERB>, and <VERB>qk</VERB> is a nxn matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>r</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>=<VERB>[r0,r1,...,rf]</VERB>, and <VERB>gk</VERB> is a mxm matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x0, p0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: initial state estimate and error variance</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: observations in the interval <VERB>[t0,tf]</VERB>. <VERB>y=[y0,y1,...,yf]</VERB>, and <VERB>yk</VERB> is a column m-vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xs</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Smoothed state estimate <VERB>xs= [xs0,xs1,...,xsf]</VERB>, and <VERB>xsk</VERB> is a column n-vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ps</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Error covariance of smoothed estimate <VERB>ps=[p0,p1,...,pf]</VERB>, and <VERB>pk</VERB> is a nxn matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xf</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Filtered state estimate <VERB>xf= [xf0,xf1,...,xff]</VERB>, and <VERB>xfk</VERB> is a column n-vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>pf</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Error covariance of filtered estimate <VERB>pf=[p0,p1,...,pf]</VERB>, and <VERB>pk</VERB> is a nxn matrix</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which gives the Wiener estimate using
+ the forward-backward Kalman filter formulation</P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>wigner</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="wigner"> 'time-frequency' wigner spectrum</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[tab]=wigner(x,h,deltat,zp) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>tab</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: wigner spectrum (lines correspond to the time variable)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: analyzed signal</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data window</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>deltat</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: analysis time increment (in samples)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: length of FFT's. <VERB>%pi/zp</VERB> gives the frequency increment.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which computes the 'time-frequency' wigner
+ spectrum of a signal.</P>
+ </DESCRIPTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>window</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="window"> compute symmetric window of various type</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>
+ win_l=window('re',n)
+ </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>
+ win_l=window('tr',n)
+ </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>
+ win_l=window('hn',n)
+ </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>
+ win_l=window('hm',n)
+ </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>
+ win_l=window('kr',n,alpha)
+ </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>
+ [win_l,cwp]=window('ch',n,par)
+ </CALLING_SEQUENCE_ITEM>
+
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: window length</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>par</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: parameter 2-vector <VERB>par=[dp,df])</VERB>, where
+ <VERB>dp</VERB> (<VERB>0<dp<.5</VERB>) rules the main lobe
+ width and <VERB>df</VERB> rules the side lobe height
+ (<VERB>df>0</VERB>).</SP>
+ <SP>Only one of these two value should be specified the other one
+ should set equal to <VERB>-1</VERB>.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>alpha</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: kaiser window parameter <VERB>alpha >0</VERB>). </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>win</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: window</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cwp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: unspecified Chebyshev window parameter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ function which calculates various symmetric window for Disgital signal processing</P>
+ <P>
+ The Kaiser window is a nearly optimal window function. <VERB>alpha</VERB>
+ is an arbitrary positive real number that determines the shape of the
+ window, and the integer <VERB>n</VERB> is the length of the window.
+</P>
+ <P>
+ By construction, this function peaks at unity for <VERB> k = n/2</VERB> ,
+ i.e. at the center of the window, and decays exponentially towards the
+ window edges. The larger the value of <VERB>alpha</VERB>, the narrower
+ the window becomes; <VERB>alpha = 0</VERB> corresponds to a rectangular window.
+ Conversely, for larger <VERB>alpha</VERB> the width of the main lobe
+ increases in the Fourier transform, while the side lobes decrease in
+ amplitude.
+ Thus, this parameter controls the tradeoff between main-lobe width and
+ side-lobe area.
+</P>
+ <TABLE>
+
+ <TABLE_NEW_ROW>
+ <TABLE_NEW_COLUMN>alpha</TABLE_NEW_COLUMN>
+ <TABLE_NEW_COLUMN>window shape</TABLE_NEW_COLUMN>
+ </TABLE_NEW_ROW>
+ <TABLE_NEW_ROW>
+ <TABLE_NEW_COLUMN>0</TABLE_NEW_COLUMN>
+ <TABLE_NEW_COLUMN>Rectangular shape</TABLE_NEW_COLUMN>
+ </TABLE_NEW_ROW>
+ <TABLE_NEW_ROW>
+ <TABLE_NEW_COLUMN>5</TABLE_NEW_COLUMN>
+ <TABLE_NEW_COLUMN>Similar to the Hamming window</TABLE_NEW_COLUMN>
+ </TABLE_NEW_ROW>
+ <TABLE_NEW_ROW>
+ <TABLE_NEW_COLUMN>6</TABLE_NEW_COLUMN>
+ <TABLE_NEW_COLUMN>Similar to the Hanning window</TABLE_NEW_COLUMN>
+ </TABLE_NEW_ROW>
+ <TABLE_NEW_ROW>
+ <TABLE_NEW_COLUMN>8.6</TABLE_NEW_COLUMN>
+ <TABLE_NEW_COLUMN>Similar to the Blackman window</TABLE_NEW_COLUMN>
+ </TABLE_NEW_ROW>
+ </TABLE>
+<P>
+ The Chebyshev window minimizes the mainlobe width, given a particular sidelobe
+ height. It is characterized by an equiripple behavior, that is, its
+ sidelobes all have the same height.
+</P>
+
+<P>
+ The Hanning and Hamming windows are quite similar, they only differ in
+ the choice of one parameter <VERB>alpha</VERB>:
+ <VERB> w=alpha+(1 - alpha)*cos(2*%pi*x/(n-1))</VERB>
+ <VERB>alpha</VERB> is equal to 1/2 in Hanning window and to 0.54 in
+ Hamming window.
+ </P>
+
+ </DESCRIPTION>
+
+ <EXAMPLE>
+<![CDATA[
+// Hamming window
+clf()
+N=64;
+w=window('hm',N);
+subplot(121);plot2d(1:N,w,style=color('blue'))
+set(gca(),'grid',[1 1]*color('gray'))
+subplot(122)
+n=256;[W,fr]=frmag(w,n);
+plot2d(fr,20*log10(W),style=color('blue'))
+set(gca(),'grid',[1 1]*color('gray'))
+
+//Kaiser window
+clf()
+N=64;
+w=window('kr',N,6);
+subplot(121);plot2d(1:N,w,style=color('blue'))
+set(gca(),'grid',[1 1]*color('gray'))
+subplot(122)
+n=256;[W,fr]=frmag(w,n);
+plot2d(fr,20*log10(W),style=color('blue'))
+set(gca(),'grid',[1 1]*color('gray'))
+
+//Chebyshev window
+clf()
+N=64;
+[w,df]=window('ch',N,[0.005,-1]);
+subplot(121);plot2d(1:N,w,style=color('blue'))
+set(gca(),'grid',[1 1]*color('gray'))
+subplot(122)
+n=256;[W,fr]=frmag(w,n);
+plot2d(fr,20*log10(W),style=color('blue'))
+set(gca(),'grid',[1 1]*color('gray'))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>wfir</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>frmag</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>ffilt</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+
+ <AUTHOR>Carey Bunks </AUTHOR>
+<BIBLIO>
+ <SP>IEEE. Programs for Digital Signal Processing. IEEE Press. New York: John
+ Wiley and Sons, 1979. Program 5.2.</SP>
+</BIBLIO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>yulewalk</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="yulewalk"> least-square filter design</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>Hz = yulewalk(N,frq,mag) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>N</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (order of desired filter)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>frq</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real row vector (non-decreasing order), frequencies.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>mag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: non negative real row vector (same size as frq), desired magnitudes.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>Hz</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter <VERB>B(z)/A(z)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Hz = yulewalk(N,frq,mag) finds the N-th order iir filter</P>
+ <VERBATIM>
+<![CDATA[
+ n-1 n-2
+ B(z) b(1)z + b(2)z + .... + b(n)
+H(z)= ---- = ---------------------------------
+ n-1 n-2
+ A(z) z + a(2)z + .... + a(n)
+ ]]>
+ </VERBATIM>
+ <P>
+ which matches the magnitude frequency response given by vectors frq and mag.
+ Vectors frq and mag specify the frequency and magnitude of the desired
+ frequency response. The frequencies in frq must be between 0.0 and 1.0,
+ with 1.0 corresponding to half the sample rate. They must be in
+ increasing order and start with 0.0 and end with 1.0.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+f=[0,0.4,0.4,0.6,0.6,1];H=[0,0,1,1,0,0];Hz=yulewalk(8,f,H);
+fs=1000;fhz = f*fs/2;
+xbasc(0);xset('window',0);plot2d(fhz',H');
+xtitle('Desired Frequency Response (Magnitude)')
+[frq,repf]=repfreq(Hz,0:0.001:0.5);
+xbasc(1);xset('window',1);plot2d(fs*frq',abs(repf'));
+xtitle('Obtained Frequency Response (Magnitude)')
+ ]]>
+ </EXAMPLE>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>zpbutt</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="zpbutt"> Butterworth analog filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[pols,gain]=zpbutt(n,omegac) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (filter order)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real (cut-off frequency in Hertz)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>pols</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting poles of filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gain</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting gain of filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ computes the poles of a Butterworth analog
+ filter of order <VERB>n</VERB> and cutoff frequency omegac
+ transfer function H(s) is calculated by <VERB>H(s)=gain/real(poly(pols,'s'))</VERB></P>
+ </DESCRIPTION>
+ <AUTHOR>F. Delebecque INRIA</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>zpch1</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="zpch1"> Chebyshev analog filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[poles,gain]=zpch1(n,epsilon,omegac) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (filter order)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>epsilon</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : ripple in the pass band (<VERB>0<epsilon<1</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : cut-off frequency in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>poles</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting filter poles</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gain</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting filter gain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Poles of a Type 1 Chebyshev analog filter. The transfer function is given by :</P>
+ <VERBATIM>
+<![CDATA[
+ H(s)=gain/poly(poles,'s')
+ ]]>
+ </VERBATIM>
+ </DESCRIPTION>
+ <AUTHOR>F.D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>zpch2</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="zpch2"> Chebyshev analog filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[zeros,poles,gain]=zpch2(n,A,omegar) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>A</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : attenuation in stop band (<VERB>A>1</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : cut-off frequency in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zeros</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting filter zeros</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>poles</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting filter poles</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gain</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Resulting filter gain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Poles and zeros of a type 2 Chebyshev analog filter
+ gain is the gain of the filter</P>
+ <VERBATIM>
+<![CDATA[
+H(s)=gain*poly(zeros,'s')/poly(poles,'s')
+ ]]>
+ </VERBATIM>
+ </DESCRIPTION>
+ <AUTHOR>F.D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>zpell</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="zpell"> lowpass elliptic filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[zeros,poles,gain]=zpell(epsilon,A,omegac,omegar) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>epsilon</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : ripple of filter in pass band (<VERB>0<epsilon<1</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>A</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : attenuation of filter in stop band (<VERB>A>1</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : pass band cut-off frequency in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : stop band cut-off frequency in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zeros</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting zeros of filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>poles</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting poles of filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gain</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting gain of filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Poles and zeros of prototype lowpass elliptic filter.
+ <VERB>gain</VERB> is the gain of the filter</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>ell1mag</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>eqiir</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F.D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>Signal</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="Signal"> Signal manual description</SHORT_DESCRIPTION>
+ <SECTION label="Filters">
+ <ITEMIZE>
+ <ITEM label="analpf">
+ <SP>: analog low-pass filter</SP>
+ </ITEM>
+ <ITEM label="buttmag">
+ <SP>: squared magnitude response of a Butterworth filter</SP>
+ </ITEM>
+ <ITEM label="casc">
+ <SP>: creates cascade realization of filter</SP>
+ </ITEM>
+ <ITEM label="cheb1mag">
+ <SP>: square magnitude response of a type 1 Chebyshev filter</SP>
+ </ITEM>
+ <ITEM label="cheb2mag">
+ <SP>: square magnitude response of a type 1 Chebyshev filter</SP>
+ </ITEM>
+ <ITEM label="chepol">
+ <SP>: recursive implementation of Chebychev polynomial</SP>
+ </ITEM>
+ <ITEM label="convol">
+ <SP>: convolution of 2 discrete series</SP>
+ </ITEM>
+ <ITEM label="ell1 mag">
+ <SP>: squared magnitude of an elliptic filter</SP>
+ </ITEM>
+ <ITEM label="eqfir">
+ <SP>: minimax multi-band, linear phase, FIR filter</SP>
+ </ITEM>
+ <ITEM label="eqiir">
+ <SP>: design of iir filter</SP>
+ </ITEM>
+ <ITEM label="faurre">
+ <SP>: optimal lqg filter.</SP>
+ </ITEM>
+ <ITEM label="lindquis">
+ <SP>: optimal lqg filter lindquist algorithm</SP>
+ </ITEM>
+ <ITEM label="ffilt">
+ <SP>: FIR low-pass,high-pass, band-pass, or stop-band filter</SP>
+ </ITEM>
+ <ITEM label="filter">
+ <SP>: compute the filter model</SP>
+ </ITEM>
+ <ITEM label="find_freq">
+ <SP>: parameter compatibility for elliptic filter design</SP>
+ </ITEM>
+ <ITEM label="findm">
+ <SP>: for elliptic filter design</SP>
+ </ITEM>
+ <ITEM label="frmag">
+ <SP>: magnitude of the frequency responses of FIR and IIR filters.</SP>
+ </ITEM>
+ <ITEM label="fsfirlin">
+ <SP>: design of FIR, linear phase (frequency sampling technique)</SP>
+ </ITEM>
+ <ITEM label="fwiir">
+ <SP>: optimum design of IIR filters in cascade realization,</SP>
+ </ITEM>
+ <ITEM label="iir">
+ <SP>: designs an iir digital filter using analog filter designs.</SP>
+ </ITEM>
+ <ITEM label="iirgroup">
+ <SP>: group delay of iir filter</SP>
+ </ITEM>
+ <ITEM label="iirlp">
+ <SP>: Lp IIR filters optimization</SP>
+ </ITEM>
+ <ITEM label="group">
+ <SP>: calculate the group delay of a digital filter</SP>
+ </ITEM>
+ <ITEM label="optfir">
+ <SP>: optimal design of linear phase filters using linear programming</SP>
+ </ITEM>
+ <ITEM label="remezb">
+ <SP>: minimax approximation of a frequency domain magnitude response.</SP>
+ </ITEM>
+ <ITEM label="kalm">
+ <SP>: Kalman update and error variance</SP>
+ </ITEM>
+ <ITEM label="lev">
+ <SP>: resolve the Yule-Walker equations :</SP>
+ </ITEM>
+ <ITEM label="levin">
+ <SP>: solve recursively Toeplitz system (normal equations)</SP>
+ </ITEM>
+ <ITEM label="srfaur">
+ <SP>: square-root algorithm for the algebraic Riccati equation.</SP>
+ </ITEM>
+ <ITEM label="srkf">
+ <SP>: square-root Kalman filter algorithm</SP>
+ </ITEM>
+ <ITEM label="sskf">
+ <SP>: steady-state Kalman filter</SP>
+ </ITEM>
+ <ITEM label="system">
+ <SP>: generates the next observation given the old state</SP>
+ </ITEM>
+ <ITEM label="trans">
+ <SP>: transformation of standardized low-pass filter into low-pass, high-pass, band-pass, stop-band.</SP>
+ </ITEM>
+ <ITEM label="wfir">
+ <SP>: linear-phase windowed FIR low-pass, band-pass, high-pass, stop-band</SP>
+ </ITEM>
+ <ITEM label="wiener">
+ <SP>: Wiener estimate (forward-backward Kalman filter formulation)</SP>
+ </ITEM>
+ <ITEM label="wigner">
+ <SP>: time-frequency wigner spectrum of a signal.</SP>
+ </ITEM>
+ <ITEM label="window">
+ <SP>: calculate symmetric window</SP>
+ </ITEM>
+ <ITEM label="zpbutt">
+ <SP>: Butterworth analog filter</SP>
+ </ITEM>
+ <ITEM label="zpch1">
+ <SP>: poles of a type 1 Chebyshev analog filter</SP>
+ </ITEM>
+ <ITEM label="zpch2">
+ <SP>: poles and zeros of a type 2 Chebyshev analog filter</SP>
+ </ITEM>
+ <ITEM label="zpell">
+ <SP>: poles and zeros of prototype lowpass elliptic filter</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Spectral estimation">
+ <ITEMIZE>
+ <ITEM label="corr">
+ <SP>: correlation coefficients</SP>
+ </ITEM>
+ <ITEM label="cspect">
+ <SP>: spectral estimation using the modified periodogram method.</SP>
+ </ITEM>
+ <ITEM label="czt">
+ <SP>: chirp z-transform algorithm</SP>
+ </ITEM>
+ <ITEM label="intdec">
+ <SP>: change the sampling rate of a 1D or 2D signal</SP>
+ </ITEM>
+ <ITEM label="mese">
+ <SP>: calculate the maximum entropy spectral estimate</SP>
+ </ITEM>
+ <ITEM label="pspect">
+ <SP>: auto and cross-spectral estimate</SP>
+ </ITEM>
+ <ITEM label="wigner">
+ <SP>: Wigner-Ville time/frequency spectral estimation</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Transforms">
+ <ITEMIZE>
+ <ITEM label="dft">
+ <SP>: discrete Fourier transform</SP>
+ </ITEM>
+ <ITEM label="fft">
+ <SP>: fast flourier transform</SP>
+ </ITEM>
+ <ITEM label="hilb">
+ <SP>: Hilbert transform centred around the origin.</SP>
+ </ITEM>
+ <ITEM label="hank">
+ <SP>: hankel matrix of the covariance sequence of a vector process</SP>
+ </ITEM>
+ <ITEM label="mfft">
+ <SP>: fft for a multi-dimensional signal</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Identification">
+ <ITEMIZE>
+ <ITEM label="lattn,lattp">
+ <SP>: recursive solution of normal equations</SP>
+ </ITEM>
+ <ITEM label="phc">
+ <SP>: State space realisation by the principal hankel component approximation method,</SP>
+ </ITEM>
+ <ITEM label="rpem">
+ <SP>: identification by the recursive prediction error method</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+ <SECTION label="Miscellaneous">
+ <ITEMIZE>
+ <ITEM label="lgfft">
+ <SP>: computes p = ceil (log_2(x))</SP>
+ </ITEM>
+ <ITEM label="sinc">
+ <SP>: calculate the function sin(2*pi*fl*t)/(pi*t)</SP>
+ </ITEM>
+ <ITEM label="sincd">
+ <SP>: calculates the function Sin(N*x)/Sin(x)</SP>
+ </ITEM>
+ <ITEM label="%k">
+ <SP>: Jacobi's complete elliptic integral</SP>
+ </ITEM>
+ <ITEM label="%asn">
+ <SP>: .TP the elliptic integral :</SP>
+ </ITEM>
+ <ITEM label="%sn">
+ <SP>: Jacobi 's elliptic function with parameter m</SP>
+ </ITEM>
+ <ITEM label="bilt">
+ <SP>: bilinear transform or biquadratic transform.</SP>
+ </ITEM>
+ <ITEM label="jmat">
+ <SP>: permutes block rows or block columns of a matrix</SP>
+ </ITEM>
+ </ITEMIZE>
+ </SECTION>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>analpf</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="analpf"> create analog low-pass filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hs,pols,zers,gain]=analpf(n,fdesign,rp,omega) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fdesign</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : filter design method : <VERB>'butt'</VERB> or <VERB>'cheb1'</VERB> or <VERB>'cheb2'</VERB> or <VERB>'ellip'</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>rp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 2-vector of error values for cheb1, cheb2 and ellip filters where only <VERB>rp(1)</VERB> is used for cheb1 case, only <VERB>rp(2)</VERB> is used for cheb2 case, and <VERB>rp(1)</VERB> and <VERB>rp(2)</VERB> are both used for ellip case. <VERB>0<rp(1),rp(2)<1</VERB></SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for cheb1 filters <VERB>1-rp(1)<ripple<1</VERB> in passband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for cheb2 filters <VERB>0<ripple<rp(2)</VERB> in stopband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>- </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>for ellip filters <VERB>1-rp(1)<ripple<1</VERB> in passband <VERB>0<ripple<rp(2)</VERB> in stopband</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omega</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: cut-off frequency of low-pass filter in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hs</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: rational polynomial transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>pols</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: poles of transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zers</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: zeros of transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>gain</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain of transfer function</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Creates analog low-pass filter with cut-off frequency at omega.</P>
+ <P>
+ <VERB>hs=gain*poly(zers,'s')/poly(pols,'s')</VERB>
+ </P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Evaluate magnitude response of continuous-time system
+hs=analpf(4,'cheb1',[.1 0],5)
+fr=0:.1:15;
+hf=freq(hs(2),hs(3),%i*fr);
+hm=abs(hf);
+plot(fr,hm)
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>buttmag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="buttmag"> response of Butterworth filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[h]=buttmag(order,omegac,sample) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>order</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : cut-off frequency in Hertz</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sample</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of frequency where <VERB>buttmag</VERB> is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Butterworth filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ squared magnitude response of a Butterworth filter
+ <VERB>omegac</VERB> = cutoff frequency ; <VERB>sample</VERB> = sample of frequencies</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//squared magnitude response of Butterworth filter
+h=buttmag(13,300,1:1000);
+mag=20*log(h)'/log(10);
+plot2d((1:1000)',mag,[2],"011"," ",[0,-180,1000,20])
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>casc</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="casc"> cascade realization of filter from coefficients</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cels]=casc(x,z) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: (4xN)-matrix where each column is a cascade element, the first two column entries being the numerator coefficients and the second two column entries being the denominator coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>z</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string representing the cascade variable</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cels</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: resulting cascade representation</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Creates cascade realization of filter from a matrix of coefficients
+ (utility function).</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+x=[1,2,3;4,5,6;7,8,9;10,11,12]
+cels=casc(x,'z')
+ ]]>
+ </EXAMPLE>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cepstrum</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cepstrum"> cepstrum calculation</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>fresp = cepstrum(w,mag) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>w</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: positive real vector of frequencies (rad/sec)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>mag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector of magnitudes (same size as <VERB>w</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fresp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: complex vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P><VERB>fresp = cepstrum(w,mag)</VERB> returns a frequency response <VERB>fresp(i)</VERB>
+ whose magnitude at frequency <VERB>w(i)</VERB> equals <VERB>mag(i)</VERB> and such
+ that the phase of <VERB>freq</VERB> corresponds to a stable and minimum phase
+ system. <VERB>w</VERB> needs not to be sorted, but minimal entry should not be
+ close to zero and all the entries of <VERB>w</VERB> should be different.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+w=0.1:0.1:5;mag=1+abs(sin(w));
+fresp=cepstrum(w,mag);
+plot2d([w',w'],[mag(:),abs(fresp)])
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>frfit</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cheb1mag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cheb1mag"> response of Chebyshev type 1 filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[h2]=cheb1mag(n,omegac,epsilon,sample) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegac</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : cut-off frequency</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>epsilon</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real : ripple in pass band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sample</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of frequencies where <VERB>cheb1mag</VERB> is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h2</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Chebyshev I filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Square magnitude response of a type 1 Chebyshev filter.</P>
+ <P><VERB>omegac</VERB>=passband edge.</P>
+ <P><VERB>epsilon</VERB>: such that <VERB>1/(1+epsilon^2)</VERB>=passband ripple.</P>
+ <P><VERB>sample</VERB>: vector of frequencies where the square magnitude
+ is desired.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Chebyshev; ripple in the passband
+n=13;epsilon=0.2;omegac=3;sample=0:0.05:10;
+h=cheb1mag(n,omegac,epsilon,sample);
+plot2d(sample,h)
+xtitle('','frequencies','magnitude')
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>buttmag</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cheb2mag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cheb2mag"> response of type 2 Chebyshev filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[h2]=cheb2mag(n,omegar,A,sample) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer ; filter order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>omegar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real scalar : cut-off frequency</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>A</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: attenuation in stop band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sample</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of frequencies where cheb2mag is evaluated</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>h2</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of Chebyshev II filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Square magnitude response of a type 2 Chebyshev filter.</P>
+ <P><VERB>omegar</VERB> = stopband edge, <VERB>sample</VERB> = vector of
+ frequencies where the square magnitude <VERB>h2</VERB> is desired.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//Chebyshev; ripple in the stopband
+n=10;omegar=6;A=1/0.2;sample=0.0001:0.05:10;
+h2=cheb2mag(n,omegar,A,sample);
+plot(sample,log(h2)/log(10),'frequencies','magnitude in dB')
+//Plotting of frequency edges
+minval=(-maxi(-log(h2)))/log(10);
+plot2d([omegar;omegar],[minval;0],[2],"000");
+//Computation of the attenuation in dB at the stopband edge
+attenuation=-log(A*A)/log(10);
+plot2d(sample',attenuation*ones(sample)',[5],"000")
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>cheb1mag</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>chepol</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="chepol"> Chebychev polynomial</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[Tn]=chepol(n,var) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer : polynomial order</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>var</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : polynomial variable</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>Tn</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: polynomial in the variable <VERB>var</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Recursive implementation of Chebychev polynomial.
+ <VERB>Tn=2*poly(0,var)*chepol(n-1,var)-chepol(n-2,var)</VERB> with
+ <VERB>T0=1</VERB> and <VERB>T1=poly(0,var)</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+chepol(4,'x')
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>F. D. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>convol</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="convol"> convolution</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y]=convol(h,x) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[y,e1]=convol(h,x,e0) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x,h</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>:input sequences (<VERB>h</VERB> is a "short" sequence, <VERB>x</VERB> a "long" one)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>e0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: old tail to overlap add (not used in first call)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output of convolution</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>e1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: new tail to overlap add (not used in last call)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ calculates the convolution <VERB>y= h*x</VERB> of two
+ discrete sequences by using the fft. Overlap add method can be used.</P>
+ <P>
+ USE OF OVERLAP ADD METHOD:
+ For x=[x1,x2,...,xNm1,xN]
+ First call is [y1,e1]=convol(h,x1);
+ Subsequent calls : [yk,ek]=convol(h,xk,ekm1);
+ Final call : [yN]=convol(h,xN,eNm1);
+ Finally y=[y1,y2,...,yNm1,yN]</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+x=1:3;
+h1=[1,0,0,0,0];h2=[0,1,0,0,0];h3=[0,0,1,0,0];
+x1=convol(h1,x),x2=convol(h2,x),x3=convol(h3,x),
+convol(h1+h2+h3,x)
+p1=poly(x,'x','coeff')
+p2=poly(h1+h2+h3,'x','coeff')
+p1*p2
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>corr</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>pspect</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>F. D , C. Bunks Date 3 Oct. 1988; ; </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>corr</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="corr"> correlation, covariance</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cov,Mean]=corr(x,[y],nlags) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[cov,Mean]=corr('fft',xmacro,[ymacro],n,sect) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM> </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[w,xu]=corr('updt',x1,[y1],w0) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[w,xu]=corr('updt',x2,[y2],w,xu) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM> ... </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>[wk]=corr('updt',xk,[yk],w,xu) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector, default value x.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>nlags</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of correlation coefficients desired.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xmacro</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a scilab external (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ymacro</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a scilab external (see below), default value xmacro</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: an integer, total size of the sequence (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sect</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: size of sections of the sequence (see below).</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xi</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>yi</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: a real vector,default value xi.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cov</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real vector, the correlation coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>Mean</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real number or vector, the mean of x and if given y</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Computes
+ </P>
+ <VERBATIM>
+<![CDATA[
+ n - m
+ ====
+ \ 1
+ cov(m) = > (x(k) - xmean) (y(m+k) - ymean) * ---
+ / n
+ ====
+ k = 1
+ ]]>
+ </VERBATIM>
+ <P>
+ for m=0,..,<VERB>nlag-1</VERB> and two vectors <VERB>x=[x(1),..,x(n)]</VERB>
+ <VERB>y=[y(1),..,y(n)]</VERB>
+ </P>
+ <P>
+ Note that if x and y sequences are differents corr(x,y,...) is
+ different with corr(y,x,...)
+ </P>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label="Short sequences">
+ <SP><VERB>[cov,Mean]=corr(x,[y],nlags)</VERB> returns the first nlags
+ correlation coefficients and Mean = <VERB>mean(x)</VERB>
+ (mean of <VERB>[x,y]</VERB> if <VERB>y</VERB> is an argument).
+ The sequence <VERB>x</VERB> (resp. <VERB>y</VERB>) is assumed real, and <VERB>x</VERB>
+ and <VERB>y</VERB> are of same dimension n.</SP>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM label="Long sequences">
+ <SP><VERB>[cov,Mean]=corr('fft',xmacro,[ymacro],n,sect)</VERB> Here <VERB>xmacro</VERB> is either</SP>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM>
+ <P>
+ a function of type <VERB>[xx]=xmacro(sect,istart)</VERB> which
+ returns a vector <VERB>xx</VERB> of dimension
+ <VERB>nsect</VERB> containing the part of the sequence with
+ indices from <VERB>istart</VERB> to
+ <VERB>istart+sect-1</VERB>.</P>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM>
+ <P>
+ a fortran subroutine or C procedure which performs the same
+ calculation. (See the source code of <VERB>dgetx</VERB> for an
+ example). <VERB>n</VERB> = total size of the
+ sequence. <VERB>sect</VERB> = size of sections of the
+ sequence. <VERB>sect</VERB> must be a power of
+ 2. <VERB>cov</VERB> has dimension
+ <VERB>sect</VERB>. Calculation is performed by FFT.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM label="Updating method">
+ <VERBATIM>
+<![CDATA[
+ [w,xu]=corr('updt',x1,[y1],w0)
+ [w,xu]=corr('updt',x2,[y2],w,xu)
+ ...
+ wk=corr('updt',xk,[yk],w,xu)
+ ]]>
+ </VERBATIM>
+ <P>
+ With this calling sequence the calculation is updated at each
+ call to <VERB>corr</VERB>.</P>
+ <VERBATIM>
+<![CDATA[
+ w0 = 0*ones(1,2*nlags);
+ nlags = power of 2.
+ ]]>
+ </VERBATIM>
+ <P><VERB>x1,x2,...</VERB> are parts of <VERB>x</VERB> such that
+ <VERB>x=[x1,x2,...]</VERB> and sizes of <VERB>xi</VERB> a power of
+ 2. To get <VERB>nlags</VERB> coefficients a final fft must be
+ performed <VERB>c=fft(w,1)/n</VERB>; <VERB>cov=c(1nlags)</VERB>
+ (<VERB>n</VERB> is the size of <VERB>x (y)</VERB>). Caution: this
+ calling sequence assumes that <VERB>xmean = ymean = 0</VERB>.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+x=%pi/10:%pi/10:102.4*%pi;
+rand('seed');rand('normal');
+y=[.8*sin(x)+.8*sin(2*x)+rand(x);.8*sin(x)+.8*sin(1.99*x)+rand(x)];
+c=[];
+for j=1:2,for k=1:2,c=[c;corr(y(k,:),y(j,:),64)];end;end;
+c=matrix(c,2,128);cov=[];
+for j=1:64,cov=[cov;c(:,(j-1)*2+1:2*j)];end;
+rand('unif')
+//
+rand('normal');x=rand(1,256);y=-x;
+deff('[z]=xx(inc,is)','z=x(is:is+inc-1)');
+deff('[z]=yy(inc,is)','z=y(is:is+inc-1)');
+[c,mxy]=corr(x,y,32);
+x=x-mxy(1)*ones(x);y=y-mxy(2)*ones(y); //centring
+c1=corr(x,y,32);c2=corr(x,32);
+norm(c1+c2,1)
+[c3,m3]=corr('fft',xx,yy,256,32);
+norm(c1-c3,1)
+[c4,m4]=corr('fft',xx,256,32);
+norm(m3,1),norm(m4,1)
+norm(c3-c1,1),norm(c4-c2,1)
+x1=x(1:128);x2=x(129:256);
+y1=y(1:128);y2=y(129:256);
+w0=0*ones(1:64); //32 coeffs
+[w1,xu]=corr('u',x1,y1,w0);w2=corr('u',x2,y2,w1,xu);
+zz=real(fft(w2,1))/256;c5=zz(1:32);
+norm(c5-c1,1)
+[w1,xu]=corr('u',x1,w0);w2=corr('u',x2,w1,xu);
+zz=real(fft(w2,1))/256;c6=zz(1:32);
+norm(c6-c2,1)
+rand('unif')
+// test for Fortran or C external
+//
+deff('[y]=xmacro(sec,ist)','y=sin(ist:(ist+sec-1))');
+x=xmacro(100,1);
+[cc1,mm1]=corr(x,2^3);
+[cc,mm]=corr('fft',xmacro,100,2^3);
+[cc2,mm2]=corr('fft','corexx',100,2^3);
+[maxi(abs(cc-cc1)),maxi(abs(mm-mm1)),maxi(abs(cc-cc2)),maxi(abs(mm-mm2))]
+
+deff('[y]=ymacro(sec,ist)','y=cos(ist:(ist+sec-1))');
+y=ymacro(100,1);
+[cc1,mm1]=corr(x,y,2^3);
+[cc,mm]=corr('fft',xmacro,ymacro,100,2^3);
+[cc2,mm2]=corr('fft','corexx','corexy',100,2^3);
+[maxi(abs(cc-cc1)),maxi(abs(mm-mm1)),maxi(abs(cc-cc2)),maxi(abs(mm-mm2))]
+
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>cspect</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="cspect"> spectral estimation (correlation method) </SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[sm,cwp]=cspect(nlags,ntp,wtype,x,y,wpar) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data if vector, amount of input data if scalar</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: data if vector, amount of input data if scalar</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>nlags</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of correlation lags (positive integer)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>ntp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of transform points (positive integer)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wtype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: string : <VERB>'re','tr','hm','hn','kr','ch'</VERB> (window type)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wpar</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: optional window parameters for <VERB>wtype='kr', wpar>0</VERB> and for <VERB>wtype='ch', 0 < wpar(1) < .5, wpar(2) > 0</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>sm</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: power spectral estimate in the interval [0,1]</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cwp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: calculated value of unspecified Chebyshev window parameter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Spectral estimation using the correlation method.
+ Cross-spectral estimate of <VERB>x</VERB> and <VERB>y</VERB> is calculated when both
+ <VERB>x</VERB> and <VERB>y</VERB> are given. Auto-spectral estimate of <VERB>x</VERB> is calculated
+ if <VERB>y</VERB> is not given.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+rand('normal');rand('seed',0);
+x=rand(1:1024-33+1);
+//make low-pass filter with eqfir
+nf=33;bedge=[0 .1;.125 .5];des=[1 0];wate=[1 1];
+h=eqfir(nf,bedge,des,wate);
+//filter white data to obtain colored data
+h1=[h 0*ones(1:maxi(size(x))-1)];
+x1=[x 0*ones(1:maxi(size(h))-1)];
+hf=fft(h1,-1); xf=fft(x1,-1);yf=hf.*xf;y=real(fft(yf,1));
+sm=cspect(100,200,'tr',y);
+smsize=maxi(size(sm));fr=(1:smsize)/smsize;
+plot(fr,log(sm))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>pspect</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. Bunks ; Digital Signal Processing by Oppenheim and Schafer</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>czt</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="czt"> chirp z-transform algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[czx]=czt(x,m,w,phi,a,theta) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input data sequence</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: czt is evaluated at <VERB>m</VERB> points in z-plane</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>w</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: magnitude multiplier</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>phi</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: phase increment</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>a</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: initial magnitude</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>theta</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: initial phase</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>czx</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: chirp z-transform output</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ chirp z-transform algorithm which calcultes the z-transform on a
+ spiral in the z-plane at the points
+ <VERB>[a*exp(j*theta)][w^kexp(j*k*phi)] </VERB> for
+ <VERB>k=0,1,...,m-1</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+a=.7*exp(%i*%pi/6);
+[ffr,bds]=xgetech(); //preserve current context
+rect=[-1.2,-1.2*sqrt(2),1.2,1.2*sqrt(2)];
+t=2*%pi*(0:179)/179;xsetech([0,0,0.5,1]);
+plot2d(sin(t)',cos(t)',[2],"012",' ',rect)
+plot2d([0 real(a)]',[0 imag(a)]',[3],"000")
+xsegs([-1.0,0;1.0,0],[0,-1.0;0,1.0])
+w0=.93*exp(-%i*%pi/15);w=exp(-(0:9)*log(w0));z=a*w;
+zr=real(z);zi=imag(z);
+plot2d(zr',zi',[5],"000")
+xsetech([0.5,0,0.5,1]);
+plot2d(sin(t)',cos(t)',[2],"012",' ',rect)
+plot2d([0 real(a)]',[0 imag(a)]',[-1],"000")
+xsegs([-1.0,0;1.0,0],[0,-1.0;0,1.0])
+w0=w0/(.93*.93);w=exp(-(0:9)*log(w0));z=a*w;
+zr=real(z);zi=imag(z);
+plot2d(zr',zi',[5],"000")
+xsetech(ffr,bds); //restore context
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. Bunks</AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>detrend</TITLE>
+ <TYPE>Scilab Function </TYPE>
+ <DATE>24-Apr-2005</DATE>
+ <SHORT_DESCRIPTION name="detrend">remove constant, linear or piecewise linear trend from a vector</SHORT_DESCRIPTION>
+
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>y = detrend(x)</CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>y = detrend(x,flag)</CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>y = detrend(x,flag,bp)</CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+
+ <PARAM>
+ <PARAM_INDENT>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : vector or matrix of real or complex numbers (the signal to treat)
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : a string equal to "linear" (or "l") for linear or piecewise linear treatment
+ or "constant" (or "c") for constant treatment.
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>bp</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : the breakpoints to provide if you want a piecewise linear treatment.
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>
+ : output, the signal x with the trend removed from it.
+ </SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+
+ <DESCRIPTION>
+ <P>
+ This function removes the constant or linear or
+ piecewise linear trend from a vector <VERB>x</VERB>. In general
+ this can be useful before a fourier analysis. If <VERB>x</VERB> is
+ matrix this function removes the trend of each column of x.
+ </P>
+ <P>
+ When <VERB>flag</VERB> = "constant" or "c" <VERB>detrend</VERB> removes the constant trend
+ (simply the mean of the signal) and when <VERB>flag</VERB> = "linear" or "l" the function
+ removes the linear trend. By adding a third argument <VERB>bp</VERB> it is possible to
+ remove a continuous <EM>piecewise linear</EM> trend. Note that the "instants" of the signal
+ <VERB>x</VERB> goes from 0 to m-1 (m = length(x) if x is a vector and m = size(x,1) in case
+ x is a matrix). So the breakpoints <VERB>bp(i)</VERB> must be reals in <EM>[0 m-1]</EM>
+ (breakpoints outside are simply removed from <VERB>bp</VERB> vector).
+ </P>
+ <P>
+ The trend is got by a least square fit of <VERB>x</VERB> on the appropriate function space.
+ </P>
+ </DESCRIPTION>
+
+ <EXAMPLE><![CDATA[
+// example #1
+t = linspace(0,16*%pi,1000)';
+x = -20 + t + 0.3*sin(0.5*t) + sin(t) + 2*sin(2*t) + 0.5*sin(3*t);
+y = detrend(x);
+xbasc()
+plot2d(t,[x y],style=[2 5])
+legend(["before detrend","after detrend"]);
+xgrid()
+
+// example #2
+t = linspace(0,32*%pi,2000)';
+x = abs(t-16*%pi) + 0.3*sin(0.5*t) + sin(t) + 2*sin(2*t) + 0.5*sin(3*t);
+y = detrend(x,"linear",1000);
+xbasc()
+plot2d(t,[x y],style=[2 5])
+legend(["before detrend","after detrend"]);
+xgrid()
+ ]]></EXAMPLE>
+
+ <AUTHOR>
+ Bruno Pincon
+ </AUTHOR>
+
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>dft</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="dft"> discrete Fourier transform</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[xf]=dft(x,flag); </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: input vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>flag</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: indicates dft (flag=-1) or idft (flag=1)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>xf</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output vector</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Function which computes dft of vector <VERB>x</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+n=8;omega = exp(-2*%pi*%i/n);
+j=0:n-1;F=omega.^(j'*j); //Fourier matrix
+x=1:8;x=x(:);
+F*x
+fft(x,-1)
+dft(x,-1)
+inv(F)*x
+fft(x,1)
+dft(x,1)
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>ell1mag</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="ell1mag"> magnitude of elliptic filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[v]=ell1mag(eps,m1,z) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>eps</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: passband ripple=<VERB>1/(1+eps^2)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>m1</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: stopband ripple=<VERB>1/(1+(eps^2)/m1)</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>z</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: sample vector of values in the complex plane</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>v</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: elliptic filter values at sample points</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Function used for squared magnitude of an elliptic filter.
+ Usually <VERB>m1=eps*eps/(a*a-1)</VERB>. Returns
+ <VERB>v=real(ones(z)./(ones(z)+eps*eps*s.*s))</VERB> for <VERB>s=%sn(z,m1)</VERB>.</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+deff('[alpha,beta]=alpha_beta(n,m,m1)',...
+'if 2*int(n/2)=n then, beta=K1; else, beta=0;end;...
+alpha=%k(1-m1)/%k(1-m);')
+epsilon=0.1;A=10; //ripple parameters
+m1=(epsilon*epsilon)/(A*A-1);n=5;omegac=6;
+m=find_freq(epsilon,A,n);omegar = omegac/sqrt(m)
+%k(1-m1)*%k(m)/(%k(m1)*%k(1-m))-n //Check...
+[alpha,beta]=alpha_beta(n,m,m1)
+alpha*%asn(1,m)-n*%k(m1) //Check
+sample=0:0.01:20;
+//Now we map the positive real axis into the contour...
+z=alpha*%asn(sample/omegac,m)+beta*ones(sample);
+plot(sample,ell1mag(epsilon,m1,z))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>buttmag</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>eqfir</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="eqfir"> minimax approximation of FIR filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[hn]=eqfir(nf,bedge,des,wate) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>nf</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of output filter points desired</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>bedge</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: Mx2 matrix giving a pair of edges for each band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>des</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: M-vector giving desired magnitude for each band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>wate</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: M-vector giving relative weight of error in each band</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>hn</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: output of linear-phase FIR filter coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Minimax approximation of multi-band, linear phase, FIR filter</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+hn=eqfir(33,[0 .2;.25 .35;.4 .5],[0 1 0],[1 1 1]);
+[hm,fr]=frmag(hn,256);
+plot(fr,hm),
+ ]]>
+ </EXAMPLE>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>eqiir</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="eqiir"> Design of iir filters</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[cells,fact,zzeros,zpoles]=eqiir(ftype,approx,om,deltap,deltas) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>ftype</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter type (<VERB>'lp','hp','sb','bp'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>approx</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: design approximation (<VERB>'butt','cheb1','cheb2','ellip'</VERB>)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>om</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: 4-vector of cutoff frequencies (in radians) <VERB>om=[om1,om2,om3,om4]</VERB>, <VERB>0 <= om1 <= om2 <= om3 <= om4 <= pi</VERB>. When <VERB>ftype</VERB>='lp' or 'hp', <VERB>om3</VERB> and <VERB>om4</VERB> are not used and may be set to 0.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>deltap</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: ripple in the passband. <VERB>0<= deltap <=1</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>deltas</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: ripple in the stopband. <VERB>0<= deltas <=1</VERB></SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>cells</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: realization of the filter as second order cells</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fact</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: normalization constant</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zzeros</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: zeros in the z-domain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>zpoles</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: poles in the z-domain</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Design of iir filter interface with eqiir (syredi)</P>
+ <P>
+ The filter obtained is <VERB>h(z)=fact</VERB>*product of the elements of
+ <VERB>cells</VERB>.</P>
+ <P>
+ That is <VERB>hz=fact*prod(cells(2))./prod(cells(3))</VERB></P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+[cells,fact,zzeros,zpoles]=...
+eqiir('lp','ellip',[2*%pi/10,4*%pi/10],0.02,0.001)
+transfer=fact*poly(zzeros,'z')/poly(zpoles,'z')
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>eqfir</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>iir</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>faurre</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="faurre"> filter computation by simple Faurre algorithm</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[P,R,T]=faurre(n,H,F,G,R0) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>H, F, G</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: estimated triple from the covariance sequence of <VERB>y</VERB>.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>R0</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: E(yk*yk')</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>P</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: solution of the Riccati equation after n iterations.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>R, T</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: gain matrix of the filter.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ This function computes iteratively the minimal solution of the algebraic
+ Riccati equation and gives the matrices <VERB>R</VERB> and <VERB>T</VERB> of the
+ filter model.
+ The algorithm tries to compute the solution P as the growing limit of a
+ sequence of matrices Pn such that</P>
+ <VERBATIM>
+<![CDATA[
+ -1
+Pn+1=F*Pn*F'+(G-F*Pn*h')*(R0-H*Pn*H') *(G'-H*Pn*F')
+ -1
+P0=G*R0 *G'
+ ]]>
+ </VERBATIM>
+ <P>
+ Note that this method may not converge,especially when F has poles
+ near the unit circle. Use preferably the srfaur function.</P>
+ </DESCRIPTION>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>srfaur</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>lindquist</LINK>
+ </SEE_ALSO_ITEM>
+ <SEE_ALSO_ITEM>
+ <LINK>phc</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+ <AUTHOR>G. Le V. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>ffilt</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="ffilt"> coefficients of FIR low-pass</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[x]=ffilt(ft,n,fl,fh) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>ft</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: filter type where <VERB>ft</VERB> can take the values</SP>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>"lp" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for low-pass filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>"hp" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for high-pass filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>"bp" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for band-pass filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>"sb" </PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: for stop-band filter</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer (number of filter samples desired)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fl</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real (low frequency cut-off)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>fh</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real (high frequency cut-off)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: vector of filter coefficients</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ Get <VERB>n</VERB> coefficients of a FIR low-pass,
+ high-pass, band-pass, or stop-band filter.
+ For low and high-pass filters one cut-off
+ frequency must be specified whose value is
+ given in <VERB>fl</VERB>. For band-pass and stop-band
+ filters two cut-off frequencies must be
+ specified for which the lower value is in
+ <VERB>fl</VERB> and the higher value is in <VERB>fh</VERB></P>
+ </DESCRIPTION>
+ <AUTHOR>C. B. </AUTHOR>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>fft</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="fft"> fast Fourier transform. </SHORT_DESCRIPTION>
+ <SHORT_DESCRIPTION name="ifft"> fast Fourier transform. </SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>x=fft(a ,-1) or x=fft(a) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>x=fft(a,1) or x=ifft(a)</CALLING_SEQUENCE_ITEM>
+
+ <CALLING_SEQUENCE_ITEM>x=fft(a,-1,dim,incr) </CALLING_SEQUENCE_ITEM>
+ <CALLING_SEQUENCE_ITEM>x=fft(a,1,dim,incr) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector. Real or complex matrix (2-dim fft)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>a</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector, matrix or multidimensionnal array.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>dim</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>incr</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label='Short syntax '>
+ <DESCRIPTION_INDENT>
+
+ <DESCRIPTION_ITEM label='direct'>
+ <P><VERB>x=fft(a,-1)</VERB> or <VERB>x=fft(a)</VERB> gives a direct
+ transform.</P>
+ <DESCRIPTION_INDENT>
+
+ <DESCRIPTION_ITEM label='single variate'>
+ <P>If <VERB>a</VERB> is a vector a single variate direct FFT is
+ computed that is:</P>
+ <P>x(k)=sum over m from 1 to n of a(m)*exp(-2i*pi*(m-1)*(k-1)/n)</P>
+ <P>for k varying from 1 to n (n=size of vector <VERB>a</VERB>).</P>
+
+ <P>(the <VERB>-1</VERB> argument refers to
+ the sign of the exponent..., NOT to "inverse"), </P>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM label='multivariate'>
+ <P>If <VERB>a</VERB> is a matrix or or a
+ multidimensionnal array a multivariate direct FFT is performed.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+
+ <DESCRIPTION_ITEM label='inverse'>
+ <P><VERB>a=fft(x,1)</VERB> or <VERB>a=ifft(x)</VERB>performs the
+ inverse transform normalized by <VERB>1/n</VERB>.</P>
+ <DESCRIPTION_INDENT>
+ <DESCRIPTION_ITEM label='single variate'>
+ <P>If <VERB>a</VERB> is a vector a single variate inverse FFT is
+ computed </P>
+ </DESCRIPTION_ITEM>
+ <DESCRIPTION_ITEM label='multivariate'>
+ <P>If <VERB>a</VERB> is a matrix or or a
+ multidimensionnal array a multivariate inverse FFT is performed.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION_ITEM>
+
+ <DESCRIPTION_ITEM label='Long syntax for multidimensional FFT'>
+
+ <P><VERB>x=fft(a,-1,dim,incr)</VERB> allows to perform an multidimensional fft.</P>
+ <P>If a is a real or complex vector implicitly indexed by
+ <VERB>j1,j2,..,jp</VERB> i.e. <VERB>a(j1,j2,..,jp)</VERB> where <VERB>j1</VERB> lies in
+ <VERB>1:dim(1),</VERB> <VERB>j2</VERB> in <VERB>1:dim(2),...</VERB> one gets
+ a p-variate FFT by calling p times <VERB>fft</VERB> as follows</P>
+ <VERBATIM>
+ <![CDATA[
+ incrk=1;
+ x=a;
+ for k=1:p
+ x=fft(x ,-1,dim(k),incrk)
+ incrk=incrk*dim(k)
+ end
+ ]]>
+ </VERBATIM>
+ <P>where <VERB>dimk</VERB> is the dimension of the current variable w.r.t which
+ one is integrating and <VERB>incrk</VERB> is the increment which separates
+ two successive <VERB>jk</VERB> elements in <VERB>a</VERB>.</P>
+ <P>In particular,if <VERB>a</VERB> is an nxm matrix,
+ <VERB>x=fft(a,-1)</VERB> is equivalent to the two instructions:</P>
+ <P><VERB>a1=fft(a,-1,m,1)</VERB> and <VERB>x=fft(a1,-1,n,m)</VERB>.</P>
+ </DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+ //Comparison with explicit formula
+ //----------------------------------
+ a=[1;2;3];n=size(a,'*');
+ norm(1/n*exp(2*%i*%pi*(0:n-1)'.*.(0:n-1)/n)*a -fft(a,1))
+ norm(exp(-2*%i*%pi*(0:n-1)'.*.(0:n-1)/n)*a -fft(a,-1))
+
+ //Frequency components of a signal
+ //----------------------------------
+ // build a noides signal sampled at 1000hz containing to pure frequencies
+ // at 50 and 70 Hz
+ sample_rate=1000;
+ t = 0:1/sample_rate:0.6;
+ N=size(t,'*'); //number of samples
+ s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+
+ y=fft(s);
+ //the fft response is symetric we retain only the first N/2 points
+ f=sample_rate*(0:(N/2))/N; //associated frequency vector
+ n=size(f,'*')
+ clf()
+ plot2d(f,abs(y(1:n)))
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>corr</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+
+ <TITLE>fft2</TITLE>
+
+ <TYPE>Scilab Function</TYPE>
+
+ <DATE>November 2005</DATE>
+
+ <SHORT_DESCRIPTION name="fft2">two-dimension fast Fourier
+ transform</SHORT_DESCRIPTION>
+
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>y=fft2(x)</CALLING_SEQUENCE_ITEM>
+
+ <CALLING_SEQUENCE_ITEM>y=fft2(x,n,m)</CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: a vector/matrix/array (Real or Complex)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: a vector/matrix/array (Real or Complex)</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>m</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of rows.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+
+ <PARAM_DESCRIPTION>
+ <SP>: integer, number of columns.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+
+ <DESCRIPTION>
+ <VERBATIM>This functions performs the two-dimension discrete Fourier
+ transform.</VERBATIM>
+
+ <P><VERB>y=fft2(x)</VERB>: y and x have the same size</P>
+
+ <P><VERB>y=fft2(x,m,n):</VERB> If <VERB>m</VERB> (respectively
+ <VERB>n</VERB>) is less than the rows number (respectively columns) of
+ <VERB>x</VERB> then the <VERB>x</VERB> rows number (resp. columns) is
+ truncated, else if m (resp. <VERB>n</VERB>) is more than the rows number
+ (resp. columns) of <VERB>x</VERB> then <VERB>x</VERB> rows are completed
+ by zero (resp. columns) .</P>
+
+ <P>if <VERB>x</VERB> is a matrix then <VERB>y</VERB> is a matrix, if
+ <VERB>x</VERB> is a hypermatrix then <VERB>y</VERB> is a hypermatrix, with
+ the size of the first dimension of <VERB>y</VERB> is equal to
+ <VERB>m</VERB>, the size of the second dimension of <VERB>y</VERB> is
+ equal to <VERB>n</VERB>, the size of the ith dimension of <VERB>y</VERB>
+ (for i>2, case hypermatrix) equal to the size of the ith dimension of
+ <VERB>x</VERB>. (i.e size(y,1)=m, size(y,2)=n, size(y,i)=size(x,i) for
+ i>2)</P>
+ </DESCRIPTION>
+
+ <EXAMPLE><![CDATA[
+//Comparison with explicit formula
+a=[1 2 3 ;4 5 6 ;7 8 9 ;10 11 12]
+m=size(a,1)
+n=size(a,2)
+// fourier transform along the rows
+for i=1:n
+a1(:,i)=exp(-2*%i*%pi*(0:m-1)'.*.(0:m-1)/m)*a(:,i)
+end
+// fourier transform along the columns
+for j=1:m
+a2temp=exp(-2*%i*%pi*(0:n-1)'.*.(0:n-1)/n)*(a1(j,:)).'
+a2(j,:)=a2temp.'
+end
+norm(a2-fft2(a))
+
+
+ ]]></EXAMPLE>
+
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>fftshift</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>2001</DATE>
+ <SHORT_DESCRIPTION name="fftshift"> rearranges the fft output, moving the zero frequency to the center of the spectrum</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>y=fftshift(x [,job]) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>x</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector or matrix.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>y</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: real or complex vector or matrix.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>job</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: integer, dimension selection, or string 'all'</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ </PARAM_INDENT>
+ </PARAM>
+ <DESCRIPTION>
+ <P>
+ if <VERB>x</VERB> results of an fft computation <VERB>y= fftshift(x)</VERB> or <VERB>y= fftshift(x,"all")</VERB> moves the zero frequency component to the center
+ of the spectrum, which is sometimes a more convenient form.</P>
+ <P>
+ If <VERB>x</VERB> is a vector of size n, y is the vector <VERB>x([n/2+1:n,1:n/2])</VERB></P>
+ <P>
+ If <VERB>x</VERB> is an <VERB>m</VERB> by <VERB>n</VERB> matrix <VERB>y</VERB> is the matrix
+ <VERB>x([m/2+1:n,1:m/2],[n/2+1:n,1:n/2])</VERB>.</P>
+ <VERBATIM>
+<![CDATA[
+ [x11 x12] [x22 x21]
+x=[ ] gives y=[ ]
+ [x21 x22] [x12 x11]
+ ]]>
+ </VERBATIM>
+ <P><VERB>y= fftshift(x,n)</VERB> make the swap only along the <VERB>n</VERB>th dimension</P>
+ </DESCRIPTION>
+ <EXAMPLE>
+<![CDATA[
+//make a signal
+t=0:0.1:1000;
+x=3*sin(t)+8*sin(3*t)+0.5*sin(5*t)+3*rand(t);
+//compute the fft
+y=fft(x,-1);
+//display
+xbasc();
+subplot(2,1,1);plot2d(abs(y))
+subplot(2,1,2);plot2d(fftshift(abs(y)))
+
+//make a 2D image
+t=0:0.1:30;
+x=3*sin(t')*cos(2*t)+8*sin(3*t')*sin(5*t)+..
+ 0.5*sin(5*t')*sin(5*t)+3*rand(t')*rand(t);
+//compute the fft
+y=fft(x,-1);
+//display
+xbasc();
+xset('colormap',hotcolormap(256))
+subplot(2,1,1);Matplot(abs(y))
+subplot(2,1,2);Matplot(fftshift(abs(y)))
+
+ ]]>
+ </EXAMPLE>
+ <SEE_ALSO>
+ <SEE_ALSO_ITEM>
+ <LINK>fft</LINK>
+ </SEE_ALSO_ITEM>
+ </SEE_ALSO>
+</MAN>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+ <LANGUAGE>eng</LANGUAGE>
+ <TITLE>filter</TITLE>
+ <TYPE>Scilab Function</TYPE>
+ <DATE>April 1993</DATE>
+ <SHORT_DESCRIPTION name="filter"> modelling filter</SHORT_DESCRIPTION>
+ <CALLING_SEQUENCE>
+ <CALLING_SEQUENCE_ITEM>[y,xt]=filter(n,F,H,Rt,T) </CALLING_SEQUENCE_ITEM>
+ </CALLING_SEQUENCE>
+ <PARAM>
+ <PARAM_INDENT>
+ <PARAM_ITEM>
+ <PARAM_NAME>n</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: number of computed points.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>
+ <PARAM_ITEM>
+ <PARAM_NAME>F, H</PARAM_NAME>
+ <PARAM_DESCRIPTION>
+ <SP>: relevant matrices of the Markovian model.</SP>
+ </PARAM_DESCRIPTION>
+ </PARAM_ITEM>