UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
filter.h
1 /* filter.h */
2 /* $Id: filter.h,v 1.5 2004/02/13 09:15:52 kostya Exp $ */
3 #ifndef __filter_h
4 #define __filter_h
5 
6 #include <mix/Types.h>
7 
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif /* C++ */
12 /************************************************************************
13 * РАСЧЕТ НУЛЬ-ФАЗОВОГО ФИЛЬТРА *
14 * *
15 * ВХОДНЫЕ ДАННЫЕ: *
16 * n integer*4 - число отсчетов в трассе *
17 * dt real*4 - шаг дискретизации (мс) *
18 * Freq(m) real*4 - узловые частоты фильтра(Гц) *
19 * Ampl(m) real*4 - амплитуда фильтра в узловой частоте (0-1) *
20 * m integer*4 - количество узловых частот фильтра *
21 * *
22 * ВЫХОДНЫЕ ДАННЫЕ: *
23 * W(k) complex*8 - частотная характеристика фильтра *
24 * ierr integer*4 - индикатор ошибки: *
25 * 0 - ошибок нет. *
26 * *
27 * РАБОЧИЕ МАССИВЫ: *
28 * IFreq(m) integer*4 *
29 * *
30 * ПРИМЕЧАНИЕ: *
31 * k=0.5*s+1 *
32 * s=2**(int(log(n)/log(2.0)+0.99999) *
33 * массив Freq должен быть отсортирован по возрастанию *
34 ************************************************************************/
35  // subroutine ZeroPhase(n,dt,Freq,Ampl,m,W,IFreq,ierr)
36 
37  void Fortran(zerophase)(int*,float*,float*,float*,
38  int*,float*,int*,int*);
39 
40 /************************************************************************
41 * РАСЧЕТ МИНИМАЛЬНО-ФАЗОВОГО ФИЛЬТРА *
42 * *
43 * ВХОДНЫЕ ДАННЫЕ: *
44 * n integer*4 - число отсчетов в трассе *
45 * W(k) complex*8 - частотная характеристика фильтра *
46 * *
47 * ВЫХОДНЫЕ ДАННЫЕ: *
48 * W(k) complex*8 - частотная характеристика *
49 * минимально-фазового фильтра *
50 * ierr integer*4 - индикатор ошибки: *
51 * 0 - ошибок нет. *
52 * 1 - ошибка в решении системы методом *
53 * Левинсона *
54 * *
55 * РАБОЧИЕ МАССИВЫ: *
56 * A(2*k) complex*16 *
57 * X(2*s) real*8 *
58 * PA(s) real*8 *
59 * PB(s) real*4 *
60 * PC(s) real*4 *
61 * PD(s) real*8 *
62 * *
63 * ПРИМЕЧАНИЕ: *
64 * k=0.5*s+1 *
65 * s=2**(int(log(n)/log(2.0)+0.99999) *
66 ************************************************************************/
67  // subroutine MinPhase(n,W,A,X,PA,PB,PC,PD,ierr)
68 
69  void Fortran(minphase)(int*,float*,double*,double*,
70  double*,float*,float*,double*,int*);
71 
72 /************************************************************************
73 * ПОЛОСОВАЯ ФИЛЬТРАЦИЯ *
74 * В ЧАСТОТНОЙ ОБЛАСТИ *
75 * *
76 * ВХОДНЫЕ ДАННЫЕ: *
77 * T(n) real*4 - исходная трасса (изменяется на выходе) *
78 * n integer*4 - число отсчетов в трассе *
79 * W(k) complex*8 - частотная характеристика фильтра *
80 * k=0.5*s+1 *
81 * s=2**(int(log(n)/log(2.0)+0.99999) *
82 * *
83 * ВЫХОДНЫЕ ДАННЫЕ: *
84 * T(n) real*4 - отфильтрованная трасса *
85 * ierr integer*4 - индикатор ошибки: *
86 * 0 - ошибок нет. *
87 * *
88 * РАБОЧИЕ МАССИВЫ: *
89 * A(k) complex*16 - k=0.5*s+1 *
90 * X(s) real*8 - s=2**(int(log(n)/log(2.0)+0.99999) *
91 ************************************************************************/
92  // subroutine BandPass(T,n,W,A,X,ierr)
93 
94  void Fortran(bandpass)(float*,int*,float*,double*,double*,int*);
95 
96 /************************************************************************
97 * ПОЛОСОВАЯ ФИЛЬТРАЦИЯ В ЧАСТОТНОЙ ОБЛАСТИ *
98 * С РАСШИРЕНИЕМ НУЛЯМИ ВО ВРЕМЕННОЙ ОБЛАСТИ *
99 * *
100 * ВХОДНЫЕ ДАННЫЕ: *
101 * T(n) real*4 - исходная трасса (изменяется на выходе) *
102 * n integer*4 - число отсчетов в трассе *
103 * ind integer*4 - индикатор нормировки фильтра: *
104 * ind=0 - без нормировки, *
105 * ind=1 - с нормировкой. *
106 * flag integer*4 - индикатор расширения нулями: *
107 * flag=0 - без расширения, *
108 * flag=1 - с расширением. *
109 * W(k) complex*8 - частотная характеристика фильтра *
110 * k=0.5*s+1 *
111 * s=2**(int(log(n)/log(2.0)+0.99999) *
112 * *
113 * ВЫХОДНЫЕ ДАННЫЕ: *
114 * T(n) real*4 - отфильтрованная трасса *
115 * ierr integer*4 - индикатор ошибки: *
116 * 0 - ошибок нет. *
117 * *
118 * РАБОЧИЕ МАССИВЫ: *
119 * A(k) complex*16 - k=2*(0.5*s+1) *
120 * B(k) complex*16 - k=2*(0.5*s+1) *
121 * X(s) real*8 - s=2*(2**(int(log(n)/log(2.0)+0.99999)) *
122 ************************************************************************/
123  //subroutine ConvolF(T,n,ind,flag,W,A,B,X,ierr)
124 
125  void Fortran(convolf)(float*,int*,int*,int*,float*,
126  double*,double*,double*,int*);
127 
128 #ifdef __cplusplus
129 };
130 #endif /* C++ */
131 
132 #endif /* filter.h */