UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
polyStack.h
1 #ifndef __polyStack_h
2 #define __polyStack_h
3 
4 #ifdef __cplusplus
5 extern "C"
6 {
7 #endif /* C++ */
8 
9 #include "Subcor.h"
10 
11 typedef struct {
12  float pe, scw, wle, wlb, wre, wrb;
13 } EnFilPar;
14 
15 /******************* WeightStackInterface ************************/
16 int WeightStackInterface(Trace4Stack *comp, /* component struct X, Y, or Z*/
17  InputParam param, /* fortran call parametrs */
18  int samplesCount, /* count of samples in trace */
19  float SamplingStep, /* sampling step */
20  int ibwin, int iewin, /* begin and end window */
21  int compCnt, int num_tr,
22  int iflwf, int flAprPol, MedFilter medFil);
23 
24 int sawC(int alg, float *tr, int it, int ntri, float hdg, float dt,float *del,
25  float *amp, int *ir, int le, int kle, float pe, float *s1, float *s2,
26  float *fc, float *t, float *wp, float *we, float *w, float *trs,
27  int num, float scw, float wle, float wlb, float wre, float wrb,
28  float dd, int iflwf,int ibp,float akg,float urd,int ibwin,int iewin,
29  float *ampv, float *buf, float *tri, int isnr, float *a, float *b,
30  float *xy, float *wpi, float *wei, int ipol, MedFilter medFil);
31 
32 int wpesC(float *tr, int ib, int it, int it1, int ntr, int le, int kle,
33  float pe, float *fc, float *t, float *wp, float *we, float *w,
34  float *trs, float scw, float wle, float wlb, float wre,
35  float wrb, int iflwf, float akg, float urd,
36  float *a, float *b, float *xy, float *wpi, float *wei);
37 
38 float fenC(float a, float m, double di, float scw, float wle, float wlbi,
39  float wre, float wrbi);
40 int WeightExtent(int ib,int ie,float *trs,float *t,float *tr,float *w,
41  float *wp,float *we,int m1,int ntr,int ltr);
42 int WeightLinInterp(int m1,int me,float *trs,float *t,float *tr,float *w,
43  float *wp,float *we,int ntr,int ltr);
44 int TrWStack(int ib, int ie, float *trs,float *t,float *tr,float *w,
45  int ntr, int ltr);
46 int wf1C(int jk, int ibw, int ilw, int ip1, int ib, float *pb, float *pa,
47  float *tr, float *ts, float akg, float urd);
48 
49 /* Назначение:
50  Расчет накопленной по числу трасс (jk) весовой функции (pa) оценок подобия трассы (pb) и трасс из набора (tr) в скользящем окне размером (ib) с учетом сдвигов (ts). Расчет производится в интервале трасс с начальным индексом (ibw) размером (ilw) отсчетов. Функция осуществляет дополнительное нелинейное редактирование весовой функции (используются параметры akg, urd), предназначенное для усиления эффекта выделения регулярных волн и ослабления нерегулярных волн. */ void CurWinPar(float *pb, float *tr, int j, int is, int ib, int iebw, double *r2, double *r3, double *r4); /* Назначение: Оценка сумм квадратов (*r3 и *r4) трасс (pb и tr) и суммы произведений их значений (*r2) в окне (j - начало окна, ib - размер окна ) с учетом сдвига (is). iebw - индекс конца обрабатываемого интервала трассы. */ void redwfC(float *pa, int l, float rk, float u); /* Назначение: Нелинейное редактирование весовой функции (*pa) длиной (l) с учетом относительного уровня дискриминации (u) и коэффи- циента жесткости редактирования (rk). Входные данные: pa[i],i=0,l-1 - весовая функция, l - длина весовой ф-ции, u - относит. уровень значимости вес. ф-ции (относит ее макс. 0 < u < 1), rk - коэффициент жесткости редактирования весовой функции 0 <= rk <= 1. rk < 0.01 - редактирование не выполняется, 0.01 <=rk <0.51 - смягчение эффекта нелинейного редактирования, чем меньше rk, тем больше смягчение и больше его степень, rk = 0.51 - чистое нелинейное редактирование, 0.51<rk<=0.95 - усиление эффекта нелинейного редактирования, чем больше rk, тем больше усиление и больше его степень. 0.95 <rk<=1 - жесткое редактирование. Все значения весовой функции, превышающие уровень дискриминации, заменяются на значение ее максимума, а значения весовой функции, меньшие уровня дискриминации, заменяются на нулевые значения. Выходные данные: pa[i],i=0,l-1 - отредактир. весовая функция. */ void EditWeight(float *pa, float d, double rk); /* Назначение: Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
51  трассы (pb) и трасс из набора (tr) в скользящем окне размером (ib) с учетом
52  сдвигов (ts). Расчет производится в интервале трасс с начальным индексом
53  (ibw) размером (ilw) отсчетов. Функция осуществляет дополнительное нелинейное редактирование весовой функции (используются параметры akg, urd), предназначенное для усиления эффекта выделения регулярных волн и ослабления нерегулярных волн. */ void CurWinPar(float *pb, float *tr, int j, int is, int ib, int iebw, double *r2, double *r3, double *r4); /* Назначение: Оценка сумм квадратов (*r3 и *r4) трасс (pb и tr) и суммы произведений их значений (*r2) в окне (j - начало окна, ib - размер окна ) с учетом сдвига (is). iebw - индекс конца обрабатываемого интервала трассы. */ void redwfC(float *pa, int l, float rk, float u); /* Назначение: Нелинейное редактирование весовой функции (*pa) длиной (l) с учетом относительного уровня дискриминации (u) и коэффи- циента жесткости редактирования (rk). Входные данные: pa[i],i=0,l-1 - весовая функция, l - длина весовой ф-ции, u - относит. уровень значимости вес. ф-ции (относит ее макс. 0 < u < 1), rk - коэффициент жесткости редактирования весовой функции 0 <= rk <= 1. rk < 0.01 - редактирование не выполняется, 0.01 <=rk <0.51 - смягчение эффекта нелинейного редактирования, чем меньше rk, тем больше смягчение и больше его степень, rk = 0.51 - чистое нелинейное редактирование, 0.51<rk<=0.95 - усиление эффекта нелинейного редактирования, чем больше rk, тем больше усиление и больше его степень. 0.95 <rk<=1 - жесткое редактирование. Все значения весовой функции, превышающие уровень дискриминации, заменяются на значение ее максимума, а значения весовой функции, меньшие уровня дискриминации, заменяются на нулевые значения. Выходные данные: pa[i],i=0,l-1 - отредактир. весовая функция. */ void EditWeight(float *pa, float d, double rk); /* Назначение: Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
54  нелинейное редактирование весовой функции (используются параметры akg, urd),
55  предназначенное для усиления эффекта выделения регулярных волн и ослабления
56  нерегулярных волн.
57 
58 */
59 
60 void CurWinPar(float *pb, float *tr, int j, int is, int ib,
61  int iebw, double *r2, double *r3, double *r4);
62 /* Назначение:
63  Оценка сумм квадратов (*r3 и *r4) трасс (pb и tr) и суммы
64  произведений их значений (*r2) в окне (j - начало окна, ib - размер окна )
65  с учетом сдвига (is). iebw - индекс конца обрабатываемого интервала трассы.
66 */
67 
68 void redwfC(float *pa, int l, float rk, float u);
69 /* Назначение:
70  Нелинейное редактирование весовой функции (*pa) длиной (l)
71  с учетом относительного уровня дискриминации (u) и коэффи-
72  циента жесткости редактирования (rk).
73  Входные данные:
74  pa[i],i=0,l-1 - весовая функция,
75  l - длина весовой ф-ции,
76  u - относит. уровень значимости вес. ф-ции (относит ее макс.
77  0 < u < 1),
78  rk - коэффициент жесткости редактирования весовой функции
79  0 <= rk <= 1. rk < 0.01 - редактирование не выполняется,
80  0.01 <=rk <0.51 - смягчение эффекта нелинейного редактирования, чем меньше rk, тем больше смягчение и больше его степень, rk = 0.51 - чистое нелинейное редактирование, 0.51<rk<=0.95 - усиление эффекта нелинейного редактирования, чем больше rk, тем больше усиление и больше его степень. 0.95 <rk<=1 - жесткое редактирование. Все значения весовой функции, превышающие уровень дискриминации, заменяются на значение ее максимума, а значения весовой функции, меньшие уровня дискриминации, заменяются на нулевые значения. Выходные данные: pa[i],i=0,l-1 - отредактир. весовая функция. */ void EditWeight(float *pa, float d, double rk); /* Назначение: Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
81  редактирования, чем меньше rk, тем больше смягчение и больше его степень, rk = 0.51 - чистое нелинейное редактирование, 0.51<rk<=0.95 - усиление эффекта нелинейного редактирования, чем больше rk, тем больше усиление и больше его степень. 0.95 <rk<=1 - жесткое редактирование. Все значения весовой функции, превышающие уровень дискриминации, заменяются на значение ее максимума, а значения весовой функции, меньшие уровня дискриминации, заменяются на нулевые значения. Выходные данные: pa[i],i=0,l-1 - отредактир. весовая функция. */ void EditWeight(float *pa, float d, double rk); /* Назначение: Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
82  больше его степень, rk = 0.51 - чистое нелинейное
83  редактирование, 0.51<rk<=0.95 - усиление эффекта нелинейного редактирования, чем больше rk, тем больше усиление и больше его степень. 0.95 <rk<=1 - жесткое редактирование. Все значения весовой функции, превышающие уровень дискриминации, заменяются на значение ее максимума, а значения весовой функции, меньшие уровня дискриминации, заменяются на нулевые значения. Выходные данные: pa[i],i=0,l-1 - отредактир. весовая функция. */ void EditWeight(float *pa, float d, double rk); /* Назначение: Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
84  нелинейного редактирования, чем больше rk, тем
85  больше усиление и больше его степень. 0.95 <rk<=1 -
86  жесткое редактирование. Все значения весовой функции,
87  превышающие уровень дискриминации, заменяются на значение
88  ее максимума, а значения весовой функции, меньшие уровня дискриминации, заменяются на нулевые значения. Выходные данные: pa[i],i=0,l-1 - отредактир. весовая функция. */ void EditWeight(float *pa, float d, double rk); /* Назначение: Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
89  дискриминации, заменяются на нулевые значения.
90  Выходные данные:
91  pa[i],i=0,l-1 - отредактир. весовая функция.
92 
93 */
94 void EditWeight(float *pa, float d, double rk);
95 /* Назначение:
96  Нелинейное редактирование значения веса (*pa) с учетом уровня дискриминации (d) и коэффициента жесткости редактирования (rk). */ void GetLenForFFT(int cntTr, SizeFFT *lenFFT); int GetFilLowFreqOper(double *spFilOp, int cntSp); int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT); void GetAmplSpec(double *aspTr,double *spTr,int cntSp); void Fortran(medsum)(int* N, float* D, float SET[], float SER[], float* SUM, int* IERR); /* Назначение: Оценка средневзвешенного значения выборки данных с учетом величин отклонений значений выборки Входные данные: N - число отсчетов в выборке SET ( N-пpоизвольное), D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых, значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало- жено условие: число неотбpакованных значений N-M => 2; pекомендуемое значение D=0.1-0.25; использование D > 0.4-0.5 нецелесообpазно; пpи N < 3 отбpаковка не пpоизводится (D=0). SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
97  дискриминации (d) и коэффициента жесткости редактирования (rk).
98 */
99 
100 void GetLenForFFT(int cntTr, SizeFFT *lenFFT);
101 int GetFilLowFreqOper(double *spFilOp, int cntSp);
102 int ConvTrSpOpTr(float *trs, double *spFilOp, int cntTr, SizeFFT lenFFT);
103 void GetAmplSpec(double *aspTr,double *spTr,int cntSp);
104 
105 void Fortran(medsum)(int* N, float* D, float SET[], float SER[],
106  float* SUM, int* IERR);
107 /* Назначение:
108  Оценка средневзвешенного значения выборки данных с учетом величин
109  отклонений значений выборки
110 
111  Входные данные:
112  N - число отсчетов в выборке SET ( N-пpоизвольное),
113  D - доля отбраковываемых значений D=(0-0.99); число отбpаковываемых,
114  значений pавно целой части выpaжения M=D*N+0.5; кpоме того нало-
115  жено условие: число неотбpакованных значений N-M => 2;
116  pекомендуемое значение D=0.1-0.25;
117  использование D > 0.4-0.5 нецелесообpазно;
118  пpи N < 3 отбpаковка не пpоизводится (D=0).
119  SET - выборка N значений осредняемого параметра (одномерный массив формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
120  формата R4); массив SET изменяется на выходе, если пpоизводила сь отбpaковка (M > 0). SER - служебный массив длиной N типа float. Выходные данные: SUM - медианная оценка среднего массива SET. IERR - код завеpшения: 0 - ноpмальное завеpшение; -1 - заданное число выбоpок N <= 0; 1 - число выбоpок pавно 1 или 2 , выдается матожидание. */ #ifdef __cplusplus }; #endif /* C++ */ #endif /* __polyStack_h */
121  сь отбpaковка (M > 0).
122  SER - служебный массив длиной N типа float.
123 
124  Выходные данные:
125  SUM - медианная оценка среднего массива SET.
126  IERR - код завеpшения:
127  0 - ноpмальное завеpшение;
128  -1 - заданное число выбоpок N <= 0;
129  1 - число выбоpок pавно 1 или 2 , выдается матожидание.
130 */
131 
132 #ifdef __cplusplus
133 };
134 #endif /* C++ */
135 
136 #endif /* __polyStack_h */
Definition: polyStack.h:11
Definition: Subcor.h:88
Definition: Subcor.h:82
Definition: Subcor.h:21
Definition: Subcor.h:58