home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 September / CHIP_CD_1997_09_PL.iso / software / testsoft / labwind / demo.6 / main / include / analysis.h next >
Encoding:
C/C++ Source or Header  |  1996-08-02  |  35.1 KB  |  666 lines

  1. /*============================================================================*/
  2. /*                        L a b W i n d o w s / C V I                         */
  3. /*----------------------------------------------------------------------------*/
  4. /*    Copyright (c) National Instruments 1987-1996.  All Rights Reserved.     */
  5. /*----------------------------------------------------------------------------*/
  6. /*                                                                            */
  7. /* Title:       analysis.h                                                    */
  8. /* Purpose:     Include file for LabWindows CVI Advanced Analysis Library     */
  9. /*                                                                            */
  10. /*============================================================================*/
  11.  
  12.  
  13. #ifndef _ANALYSIS_H
  14. #define _ANALYSIS_H
  15.  
  16. #ifdef _CVI_
  17. #pragma EnableLibraryRuntimeChecking
  18. #endif
  19.  
  20. #include "cvidef.h"
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25.  
  26.  
  27. /* Error Codes */
  28. typedef enum {
  29.     NoAnlysErr              =      0,
  30.     OutOfMemAnlysErr        = -20001,
  31.     EqSamplesAnlysErr       = -20002,
  32.     SamplesGTZeroAnlysErr   = -20003,
  33.     SamplesGEZeroAnlysErr   = -20004,
  34.     SamplesGETwoAnlysErr    = -20006,
  35.     SamplesGEThreeAnlysErr  = -20007,
  36.     ArraySizeAnlysErr       = -20008,
  37.     PowerOfTwoAnlysErr      = -20009,
  38.     CyclesAnlysErr          = -20012,
  39.     DelayWidthAnlysErr      = -20014,
  40.     DtGTZeroAnlysErr        = -20016,
  41.     IndexLTSamplesAnlysErr  = -20017,
  42.     IndexLengthAnlysErr     = -20018,
  43.     UpperGELowerAnlysErr    = -20019,
  44.     NyquistAnlysErr         = -20020,
  45.     OrderGTZeroAnlysErr     = -20021,
  46.     DecFactAnlysErr         = -20022,
  47.     BandSpecAnlysErr        = -20023,
  48.     RippleGTZeroAnlysErr    = -20024,
  49.     AttenGTZeroAnlysErr     = -20025,
  50.     AttenGTRippleAnlysErr   = -20028,
  51.     EqRplDesignAnlysErr     = -20031,
  52.     EvenSizeAnlysErr        = -20033,
  53.     OddSizeAnlysErr         = -20034,
  54.     MixedSignAnlysErr       = -20036,
  55.     SizeGTOrderAnlysErr     = -20037,
  56.     SquareMatrixAnlysErr    = -20040,
  57.     SingularMatrixAnlysErr  = -20041,
  58.     LevelsAnlysErr          = -20042,
  59.     FactorAnlysErr          = -20043,
  60.     ObservationsAnlysErr    = -20044,
  61.     DataAnlysErr            = -20045,
  62.     BalanceAnlysErr         = -20047,
  63.     ModelAnlysErr           = -20048,
  64.     DistinctAnlysErr        = -20049,
  65.     PoleAnlysErr            = -20050,
  66.     ColumnAnlysErr          = -20051,
  67.     FreedomAnlysErr         = -20052,
  68.     ProbabilityAnlysErr     = -20053,
  69.     CategoryAnlysErr        = -20055,
  70.     TableAnlysErr           = -20056,
  71.     BetaFuncAnlysErr        = -20057,
  72.     DimensionAnlysErr       = -20058,
  73.     DivByZeroAnlysErr       = -20060,
  74.     InvSelectionAnlysErr    = -20061,
  75.     MaxIterAnlysErr         = -20062,
  76.     PolyAnlysErr            = -20063,
  77.     ZeroVectorAnlysErr      = -20065,
  78.     IIRFilterInfoAnlysErr   = -20066,
  79.     BaseGETopAnlysErr       = -20101,
  80.     ShiftRangeAnlysErr      = -20102,
  81.     OrderGEZeroAnlysErr     = -20103,
  82.     InternalAnlysErr        = -20999,
  83.     
  84.     _unusedAnlysErr     = 0x7fffffff
  85. } AnalysisLibErrType;
  86.  
  87.  
  88. /* Filter types */
  89. enum {
  90.     LOWPASS = 0,
  91.     HIGHPASS = 1,
  92.     BANDPASS = 2,
  93.     BANDSTOP = 3
  94. };
  95.  
  96. /*- Typedefs -----------------------------------------------------------------*/
  97.  
  98. /* Window constants used by measurement functions */
  99. typedef struct {
  100.     double enbw;
  101.     double coherentgain;
  102. } WindowConst;
  103.  
  104. /* Model function used by NonLinearFit() */
  105. typedef double CVICALLBACK ModelFun(double x, double *coef, int ncoef);
  106.  
  107. /* Filter information used by IIR filter functions */
  108. typedef struct {
  109.     int type;       /* filter type (LOWPASS, etc.) */
  110.     int order;      /* filter order */
  111.     int reset;
  112.     int na;
  113.     double *a;      /* a coefficients */
  114.     int nb;
  115.     double *b;      /* b coefficients */
  116.     int ns;
  117.     double *s;      /* internal state */
  118.  
  119. } *IIRFilterPtr;
  120.  
  121.  
  122. /*- Signal Generation --------------------------------------------------------*/
  123.  
  124. AnalysisLibErrType CVIFUNC Impulse      (int n, double amp, int index, double x[]);
  125. AnalysisLibErrType CVIFUNC Pulse        (int n, double amp, int delay,
  126.                                          int width, double pulsePattern[]);
  127. AnalysisLibErrType CVIFUNC Ramp         (int n, double first, double last,
  128.                                          double rampvals[]);
  129. AnalysisLibErrType CVIFUNC Triangle     (int n, double amp, double tri[]);
  130. AnalysisLibErrType CVIFUNC SinePattern  (int n, double amp, double phase,
  131.                                          double cycles, double sine[]);
  132. AnalysisLibErrType CVIFUNC Uniform      (int n, int seed, double x[]);
  133. AnalysisLibErrType CVIFUNC WhiteNoise   (int n, double amp, int seed,
  134.                                          double noise[]);
  135. AnalysisLibErrType CVIFUNC GaussNoise   (int n, double sDev, int seed,
  136.                                          double noise[]);
  137. AnalysisLibErrType CVIFUNC ArbitraryWave(int n, double amp, double f,
  138.                                          double *phase, const double wavetable[],
  139.                                          int wavesize, int wavetype, double x[]);
  140. AnalysisLibErrType CVIFUNC Chirp        (int n, double amp, double f1,
  141.                                          double f2, double x[]);
  142. AnalysisLibErrType CVIFUNC SawtoothWave (int n, double amp, double f,
  143.                                          double *phase, double x[]);
  144. AnalysisLibErrType CVIFUNC Sinc         (int n, double amp, double delay,
  145.                                          double dt, double x[]);
  146. AnalysisLibErrType CVIFUNC SineWave     (int n, double amp, double f,
  147.                                          double *phase, double x[]);
  148. AnalysisLibErrType CVIFUNC SquareWave   (int n, double amp, double f,
  149.                                          double *phase, double duty, double x[]);
  150. AnalysisLibErrType CVIFUNC TriangleWave (int n, double amp, double f,
  151.                                          double *phase, double x[]);
  152.  
  153.  
  154.  
  155. /*- 1-D Array Operations -----------------------------------------------------*/
  156.  
  157.  
  158. AnalysisLibErrType CVIFUNC Clear1D  (double x[], int n);
  159. AnalysisLibErrType CVIFUNC Set1D    (double x[], int n, double a);
  160. AnalysisLibErrType CVIFUNC Copy1D   (const double x[], int n, double y[]);
  161. AnalysisLibErrType CVIFUNC Add1D    (const double x[], const double y[], int n,
  162.                                      double z[]);
  163. AnalysisLibErrType CVIFUNC Sub1D    (const double x[], const double y[], int n,
  164.                                      double z[]);
  165. AnalysisLibErrType CVIFUNC Mul1D    (const double x[], const double y[], int n,
  166.                                      double z[]);
  167. AnalysisLibErrType CVIFUNC Div1D    (const double x[], const double y[], int n,
  168.                                      double z[]);
  169. AnalysisLibErrType CVIFUNC Abs1D    (const double x[], int n, double y[]);
  170. AnalysisLibErrType CVIFUNC Neg1D    (const double x[], int n, double y[]);
  171. AnalysisLibErrType CVIFUNC LinEv1D  (const double x[], int n, double a,
  172.                                      double b, double y[]);
  173. AnalysisLibErrType CVIFUNC PolyEv1D (const double x[], int n,
  174.                                      const double coef[], int k, double y[]);
  175. AnalysisLibErrType CVIFUNC Scale1D  (const double x[], int n, double y[],
  176.                                      double *offset, double *scale);
  177. AnalysisLibErrType CVIFUNC QScale1D (const double x[], int n, double y[],
  178.                                      double *scale);
  179. AnalysisLibErrType CVIFUNC MaxMin1D (const double x[], int n, double *max,
  180.                                      int *imax, double *min, int *imin);
  181. AnalysisLibErrType CVIFUNC Sum1D    (const double x[], int n, double * sum);
  182. AnalysisLibErrType CVIFUNC Prod1D   (const double x[], int n, double * prod);
  183. AnalysisLibErrType CVIFUNC Subset1D (const double x[], int n, int index,
  184.                                      int length, double y[]);
  185. AnalysisLibErrType CVIFUNC Normal1D (const double x[], int n, double y[],
  186.                                      double *ave, double *sDev);
  187.  
  188. AnalysisLibErrType CVIFUNC Reverse  (const double x[], int n, double y[]);
  189. AnalysisLibErrType CVIFUNC Shift    (const double x[], int n, int shifts,
  190.                                      double y[]);
  191. AnalysisLibErrType CVIFUNC Clip     (const double x[], int n, double upper,
  192.                                      double lower, double y[]);
  193. AnalysisLibErrType CVIFUNC Sort     (const double x[], int n, int direction,
  194.                                      double y[]);
  195.  
  196.  
  197. /*- 2-D Array Operations -----------------------------------------------------*/
  198.  
  199. AnalysisLibErrType CVIFUNC Add2D    (const void *x, const void *y, int n, int m,
  200.                                      void *z);
  201. AnalysisLibErrType CVIFUNC Sub2D    (const void *x, const void *y, int n, int m,
  202.                                      void *z);
  203. AnalysisLibErrType CVIFUNC Mul2D    (const void *x, const void *y, int n, int m,
  204.                                      void *z);
  205. AnalysisLibErrType CVIFUNC Div2D    (const void *x, const void *y, int n, int m,
  206.                                      void *z);
  207. AnalysisLibErrType CVIFUNC LinEv2D  (const void *x, int n, int m, double a,
  208.                                      double b, void *y);
  209. AnalysisLibErrType CVIFUNC PolyEv2D (const void *x, int n, int m, double coef[],
  210.                                      int k, void *y);
  211. AnalysisLibErrType CVIFUNC Scale2D  (const void *x, int n, int m, void *y,
  212.                                      double *offset, double *scale);
  213. AnalysisLibErrType CVIFUNC QScale2D (const void *x, int n, int m, void *y,
  214.                                      double *scale);
  215. AnalysisLibErrType CVIFUNC MaxMin2D (const void *x, int n, int m, double *max,
  216.                                      int *imax, int *jmax, double *min,
  217.                                      int *imin, int *jmin);
  218. AnalysisLibErrType CVIFUNC Sum2D    (const void *x, int n, int m, double *sum);
  219. AnalysisLibErrType CVIFUNC Normal2D (const void *x, int n, int m, void *y,
  220.                                      double *ave, double *sDev);
  221.  
  222.  
  223. /*- Complex Number Operations ------------------------------------------------*/
  224.  
  225. AnalysisLibErrType CVIFUNC CxAdd   (double xr, double xi, double yr, double yi,
  226.                                     double *zr, double *zi);
  227. AnalysisLibErrType CVIFUNC CxSub   (double xr, double xi, double yr, double yi,
  228.                                     double *zr, double *zi);
  229. AnalysisLibErrType CVIFUNC CxMul   (double xr, double xi, double yr, double yi,
  230.                                     double *zr, double *zi);
  231. AnalysisLibErrType CVIFUNC CxDiv   (double xr, double xi, double yr, double yi,
  232.                                     double *zr, double *zi);
  233. AnalysisLibErrType CVIFUNC CxRecip (double xr, double xi, double *yr, double *yi);
  234. AnalysisLibErrType CVIFUNC CxSqrt  (double xr, double xi, double *yr, double *yi);
  235. AnalysisLibErrType CVIFUNC CxLog   (double xr, double xi, double *yr, double *yi);
  236. AnalysisLibErrType CVIFUNC CxLn    (double xr, double xi, double *yr, double *yi);
  237. AnalysisLibErrType CVIFUNC CxPow   (double xr, double xi, double a, double *yr,
  238.                                     double *yi);
  239. AnalysisLibErrType CVIFUNC CxExp   (double xr, double xi, double *yr, double *yi);
  240. AnalysisLibErrType CVIFUNC ToPolar (double x, double y, double *mag,
  241.                                     double *phase);
  242. AnalysisLibErrType CVIFUNC ToRect  (double mag, double phase, double *x,
  243.                                     double *y);
  244.  
  245.  
  246. /*- 1-D Complex Array Operations ---------------------------------------------*/
  247.  
  248. AnalysisLibErrType CVIFUNC CxAdd1D    (const double xr[], const double xi[],
  249.                                        const double yr[], const double yi[], 
  250.                                        int n, double zr[], double zi[]);
  251.  
  252. AnalysisLibErrType CVIFUNC CxSub1D    (const double xr[], const double xi[],
  253.                                        const double yr[], const double yi[],
  254.                                        int n, double zr[], double zi[]);
  255.  
  256. AnalysisLibErrType CVIFUNC CxMul1D    (const double xr[], const double xi[],
  257.                                        const double yr[], const double yi[],
  258.                                        int n, double zr[], double zi[]);
  259.  
  260. AnalysisLibErrType CVIFUNC CxDiv1D    (const double xr[], const double xi[],
  261.                                        const double yr[], const double yi[],
  262.                                        int n, double zr[], double zi[]);
  263.  
  264. AnalysisLibErrType CVIFUNC CxLinEv1D  (const double xr[], const double xi[],
  265.                                        int n, double ar, double ai, double br,
  266.                                        double bi, double yr[], double yi[]);
  267.  
  268. AnalysisLibErrType CVIFUNC ToPolar1D  (const double x[], const double y[],
  269.                                        int n, double mag[], double phase[]);
  270.  
  271. AnalysisLibErrType CVIFUNC ToRect1D   (const double mag[], const double phase[],
  272.                                        int n, double x[], double y[]);
  273.  
  274.  
  275. /*- Frequency Domain Analysis ------------------------------------------------*/
  276.  
  277. AnalysisLibErrType CVIFUNC FFT      (double x[], double y[], int n);
  278. AnalysisLibErrType CVIFUNC InvFFT   (double x[], double y[], int n);
  279. AnalysisLibErrType CVIFUNC ReFFT    (double x[], double y[], int n);
  280. AnalysisLibErrType CVIFUNC ReInvFFT (double x[], double y[], int n);
  281. AnalysisLibErrType CVIFUNC Spectrum (double x[], int n);
  282. AnalysisLibErrType CVIFUNC FHT      (double x[], int n);
  283. AnalysisLibErrType CVIFUNC InvFHT   (double x[], int n);
  284.  
  285. AnalysisLibErrType CVIFUNC CrossSpectrum(const double x[], const double y[],
  286.                                          int n, double zr[], double zi[]);
  287.  
  288.  
  289. /*- Time Domain Analysis -----------------------------------------------------*/
  290.  
  291. AnalysisLibErrType CVIFUNC Convolve   (const double x[], int n, const double y[],
  292.                                        int m, double cxy[]);
  293. AnalysisLibErrType CVIFUNC Correlate  (const double x[], int n, const double y[],
  294.                                        int m, double rxy[]);
  295. AnalysisLibErrType CVIFUNC Integrate  (const double x[], int n, double dt,
  296.                                        double xInit, double xFinal, double y[]);
  297. AnalysisLibErrType CVIFUNC Difference (const double x[], int n, double dt,
  298.                                        double xInit, double xFinal, double y[]);
  299. AnalysisLibErrType CVIFUNC PulseParam (const double pulsePattern[], int n,
  300.                                        double *amp, double *amp90,
  301.                                        double *amp50, double *amp10,
  302.                                        double *top, double *base,
  303.                                        double *topOvershoot,
  304.                                        double *baseOvershoot, int *delay,
  305.                                        int *width, int *riseTime, int *fallTime,
  306.                                        double *slewRate);
  307. AnalysisLibErrType CVIFUNC Decimate   (const double x[], int n, int D, int avg,
  308.                                        double *y);
  309. AnalysisLibErrType CVIFUNC Deconvolve (const double y[], int ny,
  310.                                        const double x[], int nx, double h[]);
  311. AnalysisLibErrType CVIFUNC UnWrap1D   (double phase[], int n);
  312.  
  313.  
  314. /*- IIR Digital Filters ------------------------------------------------------*/
  315.  
  316. AnalysisLibErrType CVIFUNC Bw_LPF     (const double x[], int n, double fs,
  317.                                        double fc, int order, double y[]);
  318.  
  319. AnalysisLibErrType CVIFUNC Bw_HPF     (const double x[], int n, double fs,
  320.                                        double fc, int order, double y[]);
  321.  
  322. AnalysisLibErrType CVIFUNC Bw_BPF     (const double x[], int n, double fs,
  323.                                        double fl, double fh, int order,
  324.                                        double y[]);
  325.  
  326. AnalysisLibErrType CVIFUNC Bw_BSF     (const double x[], int n, double fs,
  327.                                        double fl, double fh, int order,
  328.                                        double y[]);
  329.  
  330. AnalysisLibErrType CVIFUNC Ch_LPF     (const double x[], int n, double fs,
  331.                                        double fc, double ripple,
  332.                                        int order, double y[]);
  333.  
  334. AnalysisLibErrType CVIFUNC Ch_HPF     (const double x[], int n, double fs,
  335.                                        double fc, double ripple,
  336.                                        int order, double y[]);
  337.  
  338. AnalysisLibErrType CVIFUNC Ch_BPF     (const double x[], int n, double fs,
  339.                                        double fl, double fh,
  340.                                        double ripple, int order, double y[]);
  341.  
  342. AnalysisLibErrType CVIFUNC Ch_BSF     (const double x[], int n, double fs,
  343.                                        double fl, double fh,
  344.                                        double ripple, int order, double y[]);
  345.  
  346. AnalysisLibErrType CVIFUNC InvCh_LPF  (const double x[], int n, double fs,
  347.                                        double fc, double atten, int order,
  348.                                        double y[]);
  349.  
  350. AnalysisLibErrType CVIFUNC InvCh_HPF  (const double x[], int n, double fs,
  351.                                        double fc, double atten, int order,
  352.                                        double y[]);
  353.  
  354. AnalysisLibErrType CVIFUNC InvCh_BPF  (const double x[], int n, double fs,
  355.                                        double fl, double fh, double atten,
  356.                                        int order, double y[]);
  357.  
  358. AnalysisLibErrType CVIFUNC InvCh_BSF  (const double x[], int n, double fs,
  359.                                        double fl, double fh, double atten,
  360.                                        int order, double y[]);
  361.  
  362. AnalysisLibErrType CVIFUNC Elp_LPF    (const double x[], int n, double fs,
  363.                                        double fc, double ripple, double atten,
  364.                                        int order, double y[]);
  365.  
  366. AnalysisLibErrType CVIFUNC Elp_HPF    (const double x[], int n, double fs,
  367.                                        double fc, double ripple, double atten,
  368.                                        int order, double y[]);
  369.  
  370. AnalysisLibErrType CVIFUNC Elp_BPF    (const double x[], int n, double fs,
  371.                                        double fl, double fh, double ripple,
  372.                                        double atten, int order, double y[]);
  373.  
  374. AnalysisLibErrType CVIFUNC Elp_BSF    (const double x[], int n, double fs,
  375.                                        double fl, double fh, double ripple,
  376.                                        double atten, int order, double y[]);
  377.  
  378. AnalysisLibErrType CVIFUNC Bessel_CascadeCoef(double fs, double fl, double fh,
  379.                                               IIRFilterPtr filterInfo);
  380.  
  381. AnalysisLibErrType CVIFUNC Bw_CascadeCoef    (double fs, double fl, double fh,
  382.                                               IIRFilterPtr filterInfo);
  383.  
  384. AnalysisLibErrType CVIFUNC Ch_CascadeCoef    (double fs, double fl, double fh,
  385.                                               double r, IIRFilterPtr filterInfo);
  386.  
  387. AnalysisLibErrType CVIFUNC Elp_CascadeCoef   (double fs, double fl, double fh,
  388.                                               double ripple, double atten, 
  389.                                               IIRFilterPtr filterInfo);
  390.  
  391. AnalysisLibErrType CVIFUNC InvCh_CascadeCoef (double fs, double fl, double fh,
  392.                                               double atten, IIRFilterPtr filterInfo);
  393.  
  394. AnalysisLibErrType CVIFUNC IIRCascadeFiltering(const double x[], int n,
  395.                                                IIRFilterPtr filterInfo, double y[]);
  396.  
  397. AnalysisLibErrType CVIFUNC CascadeToDirectCoef(IIRFilterPtr filterInfo, double a[],
  398.                                                int na, double b[], int nb);
  399.         
  400. IIRFilterPtr       CVIFUNC AllocIIRFilterPtr(int type, int order);
  401.         
  402. void               CVIFUNC ResetIIRFilter   (IIRFilterPtr filterInfo);
  403.  
  404. void               CVIFUNC FreeIIRFilterPtr (IIRFilterPtr filterInfo);
  405.  
  406.  
  407.   /*- Old-style IIR Filter Functions -*/
  408. AnalysisLibErrType CVIFUNC Bessel_Coef(int type, int order, double fs, 
  409.                                        double fl, double fh, double a[], 
  410.                                        int na, double b[], int nb);
  411.  
  412. AnalysisLibErrType CVIFUNC Bw_Coef    (int type, int order, double fs,
  413.                                        double fl, double fh, double a[],
  414.                                        int na, double b[], int nb);
  415.  
  416. AnalysisLibErrType CVIFUNC Ch_Coef    (int type, int order, double fs,
  417.                                        double fl, double fh, double r,
  418.                                        double a[], int na, double b[], int nb);
  419.  
  420. AnalysisLibErrType CVIFUNC Elp_Coef   (int type, int order, double fs,
  421.                                        double fl, double fh, double r1,
  422.                                        double r2, double a[], int na,
  423.                                        double b[], int nb);
  424.  
  425. AnalysisLibErrType CVIFUNC InvCh_Coef (int type, int order, double fs,
  426.                                        double fl, double fh, double fr,
  427.                                        double a[], int na, double b[], int nb);
  428.  
  429. AnalysisLibErrType CVIFUNC IIRFiltering(const double x[], int n,
  430.                                         const double a[], double y1[], int na,
  431.                                         const double b[], double x1[], int nb,
  432.                                         double y[]);
  433.  
  434.  
  435. /*- FIR Digital Filters ------------------------------------------------------*/
  436.  
  437. AnalysisLibErrType CVIFUNC Wind_LPF    (double fs, double fc, int n,
  438.                                         double coef[], int windType);
  439. AnalysisLibErrType CVIFUNC Wind_HPF    (double fs, double fc, int n,
  440.                                         double coef[], int windType);
  441. AnalysisLibErrType CVIFUNC Wind_BPF    (double fs, double fl, double fh, int n,
  442.                                         double coef[], int windType);
  443. AnalysisLibErrType CVIFUNC Wind_BSF    (double fs, double fl, double fh, int n,
  444.                                         double coef[], int windType);
  445. AnalysisLibErrType CVIFUNC Ksr_LPF     (double fs, double fc, int n,
  446.                                         double coef[], double beta);
  447. AnalysisLibErrType CVIFUNC Ksr_HPF     (double fs, double fc, int n,
  448.                                         double coef[], double beta);
  449. AnalysisLibErrType CVIFUNC Ksr_BPF     (double fs, double fl, double fh, int n,
  450.                                         double coef[], double beta);
  451. AnalysisLibErrType CVIFUNC Ksr_BSF     (double fs, double fl, double fh, int n,
  452.                                         double coef[], double beta);
  453. AnalysisLibErrType CVIFUNC Equi_Ripple (int bands, const double A[],
  454.                                         const double wts[], double fs,
  455.                                         const double cutoffs[], int type, int n,
  456.                                         double coef[], double *delta);
  457. AnalysisLibErrType CVIFUNC EquiRpl_LPF (double fs, double f1, double f2, int n,
  458.                                         double coef[], double *delta);
  459. AnalysisLibErrType CVIFUNC EquiRpl_HPF (double fs, double f1, double f2, int n,
  460.                                         double coef[], double *delta);
  461. AnalysisLibErrType CVIFUNC EquiRpl_BPF (double fs, double f1, double f2,
  462.                                         double f3, double f4, int n,
  463.                                         double coef[], double *delta);
  464. AnalysisLibErrType CVIFUNC EquiRpl_BSF (double fs, double f1, double f2,
  465.                                         double f3, double f4, int n,
  466.                                         double coef[], double *delta);
  467. AnalysisLibErrType CVIFUNC FIR_Coef    (int type, double fs, double fl,
  468.                                         double fh, int taps, double *coef);
  469.  
  470.  
  471. /*- Measurement --------------------------------------------------------------*/
  472.  
  473. AnalysisLibErrType CVIFUNC ACDCEstimator     (const double x[], int n,
  474.                                               double *acestimate,
  475.                                               double *dcestimate);
  476. AnalysisLibErrType CVIFUNC AmpPhaseSpectrum  (const double x[], int n,
  477.                                               int unwrap, double dt,
  478.                                               double ampspectrum[],
  479.                                               double phasespectrum[],
  480.                                               double *df);
  481. AnalysisLibErrType CVIFUNC AutoPowerSpectrum (const double x[], int n,
  482.                                               double dt, double autospectrum[],
  483.                                               double *df);
  484. AnalysisLibErrType CVIFUNC CrossPowerSpectrum(const double x[], const double y[],
  485.                                               int n, double dt, double magsxy[],
  486.                                               double phasesxy[], double *df);
  487. AnalysisLibErrType CVIFUNC ImpulseResponse   (const double stimulus[],
  488.                                               const double response[], int n,
  489.                                               double impulse[]);
  490. AnalysisLibErrType CVIFUNC NetworkFunctions  (void *stimulus, void *response,
  491.                                               int n, int numframes, double dt,
  492.                                               double magsxy[],
  493.                                               double phasesxy[],
  494.                                               double magtransfer[],
  495.                                               double phasetransfer[],
  496.                                               double coherence[],
  497.                                               double impulse[], double *df);
  498. AnalysisLibErrType CVIFUNC PowerFrequencyEstimate (const double autospectrum[],
  499.                                                    int n, double searchfreq,
  500.                                                    WindowConst windowconstants,
  501.                                                    double df, int span,
  502.                                                    double *freqpeak,
  503.                                                    double *powerpeak);
  504. AnalysisLibErrType CVIFUNC ScaledWindow      (double x[], int n, int window,
  505.                                               WindowConst *windowconstants);
  506. AnalysisLibErrType CVIFUNC SpectrumUnitConversion (const double spectrum[],
  507.                                                    int ns, int type, int loglin,
  508.                                                    int unitselector, double df,
  509.                                                    WindowConst windowconstants,
  510.                                                    double convertedspectrum[],
  511.                                                    char *unitstring);
  512. AnalysisLibErrType CVIFUNC TransferFunction  (const double stimulus[],
  513.                                               const double response[], int n,
  514.                                               double dt, double magtransfer[],
  515.                                               double phasetransfer[],
  516.                                               double *df);
  517.  
  518.  
  519. /*- Windows ------------------------------------------------------------------*/
  520.  
  521. AnalysisLibErrType CVIFUNC TriWin        (double x[], int n);
  522. AnalysisLibErrType CVIFUNC HanWin        (double x[], int n);
  523. AnalysisLibErrType CVIFUNC HamWin        (double x[], int n);
  524. AnalysisLibErrType CVIFUNC BkmanWin      (double x[], int n);
  525. AnalysisLibErrType CVIFUNC KsrWin        (double x[], int n, double beta);
  526. AnalysisLibErrType CVIFUNC BlkHarrisWin  (double x[], int n);
  527. AnalysisLibErrType CVIFUNC CosTaperedWin (double x[], int n);
  528. AnalysisLibErrType CVIFUNC ExBkmanWin    (double x[], int n);
  529. AnalysisLibErrType CVIFUNC ExpWin        (double x[], int n, double final);
  530. AnalysisLibErrType CVIFUNC FlatTopWin    (double x[], int n);
  531. AnalysisLibErrType CVIFUNC ForceWin      (double x[], int n, double duty);
  532. AnalysisLibErrType CVIFUNC GenCosWin     (double x[], int n, const double a[],
  533.                                           int m);
  534.  
  535.  
  536. /*- General Statistics -------------------------------------------------------*/
  537.  
  538. AnalysisLibErrType CVIFUNC Mean      (const double x[], int n, double *mean);
  539. AnalysisLibErrType CVIFUNC StdDev    (const double x[], int n, double *mean,
  540.                                       double *sDev);
  541. AnalysisLibErrType CVIFUNC Variance  (const double x[], int n, double *mean,
  542.                                       double *var);
  543. AnalysisLibErrType CVIFUNC RMS       (const double x[], int n, double *rms);
  544. AnalysisLibErrType CVIFUNC Moment    (const double x[], int n, int order,
  545.                                       double *moment);
  546. AnalysisLibErrType CVIFUNC Median    (const double x[], int n, double *median);
  547. AnalysisLibErrType CVIFUNC Mode      (const double x[], int n, double xBase,
  548.                                       double xTop, int intervals, double *mode);
  549. AnalysisLibErrType CVIFUNC Histogram (const double x[], int n, double xBase,
  550.                                       double xTop, int hist[], double Axis[],
  551.                                       int intervals);
  552.  
  553.  
  554. /*- Probability Distribution -------------------------------------------------*/
  555.  
  556. AnalysisLibErrType CVIFUNC N_Dist     (double x, double *p);
  557. AnalysisLibErrType CVIFUNC T_Dist     (double t, int n, double *p);
  558. AnalysisLibErrType CVIFUNC F_Dist     (double f, int n, int m, double *p);
  559. AnalysisLibErrType CVIFUNC XX_Dist    (double x, int n, double *p);
  560. AnalysisLibErrType CVIFUNC InvN_Dist  (double p, double *x);
  561. AnalysisLibErrType CVIFUNC InvT_Dist  (double p, int n, double *t);
  562. AnalysisLibErrType CVIFUNC InvF_Dist  (double p, int n, int m, double *f);
  563. AnalysisLibErrType CVIFUNC InvXX_Dist (double p, int n, double *x);
  564.  
  565.  
  566. /*- Analysis of Variance -----------------------------------------------------*/
  567.  
  568. AnalysisLibErrType CVIFUNC ANOVA1Way (const double y[], const int level[],
  569.                                       int n, int k, double *ssa, double *msa,
  570.                                       double *f, double *sig, double *sse,
  571.                                       double *mse, double *tss);
  572. AnalysisLibErrType CVIFUNC ANOVA2Way (const double y[], const int levelA[],
  573.                                       const int levelB[], int N, int L,
  574.                                       int a, int b, double info[4][4],
  575.                                       double *sigA, double *sigB, double *sigAB);
  576. AnalysisLibErrType CVIFUNC ANOVA3Way (const double y[], const int levelA[],
  577.                                       const int levelB[], const int levelC[],
  578.                                       int N, int L, int a, int b, int c, 
  579.                                       double info[8][4], double *sigA,
  580.                                       double *sigB, double *sigC, double *sigAB,
  581.                                       double *sigAC, double *sigBC,
  582.                                       double *sigABC);
  583.  
  584.  
  585. /*- Nonparametric Statistics -------------------------------------------------*/
  586.  
  587. AnalysisLibErrType CVIFUNC Contingency_Table (int s, int k, const void *y,
  588.                                               double *Test_Stat, double *Sig);
  589.  
  590.  
  591. /*- Curve Fitting ------------------------------------------------------------*/
  592.  
  593. AnalysisLibErrType CVIFUNC LinFit       (const double x[], const double y[],
  594.                                          int n, double z[], double *slope,
  595.                                          double *intercept, double *mse);
  596.  
  597. AnalysisLibErrType CVIFUNC ExpFit       (const double x[], const double y[],
  598.                                          int n, double z[], double *a,
  599.                                          double *b, double *mse);
  600.  
  601. AnalysisLibErrType CVIFUNC PolyFit      (const double x[], const double y[],
  602.                                          int n, int order, double z[],
  603.                                          double coef[], double *mse);
  604.  
  605. AnalysisLibErrType CVIFUNC GenLSFit     (const void *H, int row, int col,
  606.                                          const double y[], const double stddev[],
  607.                                          int algorithm, 
  608.                                          double z[], double coef[],
  609.                                          void *covar, double *mse);
  610.  
  611. AnalysisLibErrType CVIFUNC NonLinearFit (const double x[], const double y[],
  612.                                          double z[], int n, ModelFun *func,
  613.                                          double coef[], int m, double *mse);
  614.  
  615.   /*- Old-style Curve Fitting Function (replaced by GenLSFit) -*/
  616. AnalysisLibErrType CVIFUNC GenLSFitCoef (const void *H, int row, int col,
  617.                                          const double y[], double coef[],
  618.                                          int algorithm);
  619.  
  620.  
  621. /*- Vector and Matrix Algebra ------------------------------------------------*/
  622.  
  623. AnalysisLibErrType CVIFUNC DotProduct    (const double x[], const double y[],
  624.                                           int n, double *dotProd);
  625. AnalysisLibErrType CVIFUNC MatrixMul     (const void *x, const void *y, int n,
  626.                                           int k, int m, void *z);
  627. AnalysisLibErrType CVIFUNC InvMatrix     (const void *x, int n, void *y);
  628. AnalysisLibErrType CVIFUNC Transpose     (const void *x, int n, int m, void *y);
  629. AnalysisLibErrType CVIFUNC Determinant   (const void *x, int n, double *det);
  630. AnalysisLibErrType CVIFUNC Trace         (const void *x, int n, double *traceval);
  631. AnalysisLibErrType CVIFUNC LinEqs        (const void *A, const double y[],
  632.                                           int n, double x[]);
  633. AnalysisLibErrType CVIFUNC LU            (void *a, int n, int p[], int *sign);
  634. AnalysisLibErrType CVIFUNC ForwSub       (const void *a, const double y[],
  635.                                           int n, double x[], const int p[]);
  636. AnalysisLibErrType CVIFUNC BackSub       (const void *a, const double y[],
  637.                                           int n, double x[]);
  638.  
  639.  
  640. /*- Interpolation ------------------------------------------------------------*/
  641.  
  642. AnalysisLibErrType CVIFUNC PolyInterp (const double x[], const double y[],
  643.                                        int n, double x_val, double *Interp_Val,
  644.                                        double *Error);
  645. AnalysisLibErrType CVIFUNC RatInterp  (const double x[], const double y[],
  646.                                        int n, double x_val, double *Interp_Val,
  647.                                        double *Error);
  648. AnalysisLibErrType CVIFUNC SpInterp   (const double x[], const double y[],
  649.                                        const double y2[], int n, double x_val,
  650.                                        double *Interp_Val);
  651. AnalysisLibErrType CVIFUNC Spline     (const double x[], const double y[],
  652.                                        int n, double b1, double b2, double y2[]);
  653.  
  654.  
  655. /*- Error String -------------------------------------------------------------*/
  656. char * CVIFUNC GetAnalysisErrorString(AnalysisLibErrType errorNum);
  657.  
  658.  
  659. /*- The End ------------------------------------------------------------------*/
  660.  
  661. #ifdef __cplusplus
  662.  }
  663. #endif
  664.  
  665. #endif /* !defined(_ANALYSIS_H) */
  666.