UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
polyCor.h
1 #ifndef __polyCor_h
2 #define __polyCor_h
3 
4 #ifdef __cplusplus
5 extern "C"
6 {
7 #endif /* C++ */
8 
9 #include "Subcor.h"
10 
11 /***************************** definition of type ***************************/
12 
13 /* info structure about processing */
14 typedef struct _PolicorInfo{
15  int zeroTrace; /* zero trace count */
16  int shortWnd; /* count of short window effect */
17 } PolicorInfo;
18 
19 /******************* MakePolycorShifts **********************/
20 int MakePolycorShifts(Trace4Stack *comp, /* component struct X, Y, or Z */
21  InputParam *param, /* fortran call parametrs */
22  int samplesCount, /* count of samples in trace */
23  float DT, /* sampling step */
24  PolicorInfo * info, /* info about processing */
25  int compCnt, int flRejCor,
26  FILE *fp, int *isFirst,
27  float *siF, float *siFMS
28  );
29 /* Вх. данные:
30  comp - указатель на массив структур, содержащих трассы базы трасс,
31  их заголовки и параметры, количество структур в массиве
32  определяется числом компонент compCnt,
33  comp[0].cnt - количество трасс в базе,
34  comp[0].hodog[imid] - время годографа для средней трассы базы,
35  имеющей индекс imid, относительно которого назначается
36  окно корреляции,
37  comp[0].hdr[imid].TBC - время начала трассы с тем же индексом,
38  comp[curCmp].ptr , curCmp = 0,compCnt-1 - указатель на массив трасс базы одноименной компоненты с номером curCmp, param - структура, содержащая параметры корреляционной оценки сдвигов, param->NZ - смещение окна корреляции влево от времени годографа (мс), param->LDP - длина окна корреляции (мс), param->NFP - длина ФВК (функций взаимной корреляции) (мс), param->CFP - величина, ограничивающая максимально возможный сдвиг между трассами (мс), param->porFM - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, samplesCount - количество отсчетов в трассе, DT - шаг дискретизации трассы (мс), compCnt - количество компонент в трассе, flRejCor - флаг режима корреляции: 0 - корреляция в скользящей базе, корреляция помагнитограммная (для многоточечного зонда), fp - указатель на структуру файла печати, isFirst - флаг режима формирования матрицы ФВК: 1 - рассчитываются все ФВК, входящие в матрицу (для первой базы в режиме flRejCor=0 и для всех магнитограмм в режиме flRejCor=1), 0 - рассчитываются ФВК только для последнего столбца матрицы, а остальные наследуются из матрицы ФВК, соответствующей предыдущему положению базы, siF - указатель на треугольную матрицу ФВК размером lenCCF * sumNR, lenCCF - длина ФВК, sumNR - количество ФВК в треугольной матрице, равной сумме чисел от 1 до comp[0].cnt. siFMS - указатель на треугольную матрицу коэффициетов подобия трасс размером sumNR Вых. данные: comp->shifts[i],i=0,comp[0].cnt - массив сдвигов между трассами текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются сдвиги только кондиционных пар трасс, comp->qual[i], i=0,comp[0].cnt - массив оценок подобия трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки подобия только кондиционных трасс, comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
39  базы одноименной компоненты с номером curCmp,
40 
41  param - структура, содержащая параметры корреляционной оценки сдвигов,
42  param->NZ - смещение окна корреляции влево от времени годографа (мс),
43  param->LDP - длина окна корреляции (мс),
44  param->NFP - длина ФВК (функций взаимной корреляции) (мс),
45  param->CFP - величина, ограничивающая максимально возможный сдвиг
46  между трассами (мс),
47  param->porFM - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, samplesCount - количество отсчетов в трассе, DT - шаг дискретизации трассы (мс), compCnt - количество компонент в трассе, flRejCor - флаг режима корреляции: 0 - корреляция в скользящей базе, корреляция помагнитограммная (для многоточечного зонда), fp - указатель на структуру файла печати, isFirst - флаг режима формирования матрицы ФВК: 1 - рассчитываются все ФВК, входящие в матрицу (для первой базы в режиме flRejCor=0 и для всех магнитограмм в режиме flRejCor=1), 0 - рассчитываются ФВК только для последнего столбца матрицы, а остальные наследуются из матрицы ФВК, соответствующей предыдущему положению базы, siF - указатель на треугольную матрицу ФВК размером lenCCF * sumNR, lenCCF - длина ФВК, sumNR - количество ФВК в треугольной матрице, равной сумме чисел от 1 до comp[0].cnt. siFMS - указатель на треугольную матрицу коэффициетов подобия трасс размером sumNR Вых. данные: comp->shifts[i],i=0,comp[0].cnt - массив сдвигов между трассами текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются сдвиги только кондиционных пар трасс, comp->qual[i], i=0,comp[0].cnt - массив оценок подобия трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки подобия только кондиционных трасс, comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
48  трассы, при котором она еще полагается кондиционной,
49 
50  samplesCount - количество отсчетов в трассе,
51  DT - шаг дискретизации трассы (мс),
52  compCnt - количество компонент в трассе,
53  flRejCor - флаг режима корреляции: 0 - корреляция в скользящей базе,
54  корреляция помагнитограммная (для многоточечного зонда),
55  fp - указатель на структуру файла печати,
56  isFirst - флаг режима формирования матрицы ФВК: 1 - рассчитываются
57  все ФВК, входящие в матрицу (для первой базы в режиме flRejCor=0 и для всех магнитограмм в режиме flRejCor=1), 0 - рассчитываются ФВК только для последнего столбца матрицы, а остальные наследуются из матрицы ФВК, соответствующей предыдущему положению базы, siF - указатель на треугольную матрицу ФВК размером lenCCF * sumNR, lenCCF - длина ФВК, sumNR - количество ФВК в треугольной матрице, равной сумме чисел от 1 до comp[0].cnt. siFMS - указатель на треугольную матрицу коэффициетов подобия трасс размером sumNR Вых. данные: comp->shifts[i],i=0,comp[0].cnt - массив сдвигов между трассами текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются сдвиги только кондиционных пар трасс, comp->qual[i], i=0,comp[0].cnt - массив оценок подобия трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки подобия только кондиционных трасс, comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
58  flRejCor=0 и для всех магнитограмм в режиме flRejCor=1),
59  0 - рассчитываются ФВК только для последнего столбца матрицы, а остальные наследуются из матрицы ФВК, соответствующей предыдущему положению базы, siF - указатель на треугольную матрицу ФВК размером lenCCF * sumNR, lenCCF - длина ФВК, sumNR - количество ФВК в треугольной матрице, равной сумме чисел от 1 до comp[0].cnt. siFMS - указатель на треугольную матрицу коэффициетов подобия трасс размером sumNR Вых. данные: comp->shifts[i],i=0,comp[0].cnt - массив сдвигов между трассами текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются сдвиги только кондиционных пар трасс, comp->qual[i], i=0,comp[0].cnt - массив оценок подобия трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки подобия только кондиционных трасс, comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
60  матрицы, а остальные наследуются из матрицы ФВК,
61  соответствующей предыдущему положению базы,
62  siF - указатель на треугольную матрицу ФВК размером lenCCF * sumNR,
63  lenCCF - длина ФВК, sumNR - количество ФВК в треугольной
64  матрице, равной сумме чисел от 1 до comp[0].cnt.
65  siFMS - указатель на треугольную матрицу коэффициетов подобия трасс размером sumNR Вых. данные: comp->shifts[i],i=0,comp[0].cnt - массив сдвигов между трассами текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются сдвиги только кондиционных пар трасс, comp->qual[i], i=0,comp[0].cnt - массив оценок подобия трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки подобия только кондиционных трасс, comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
66  размером sumNR
67 
68  Вых. данные:
69  comp->shifts[i],i=0,comp[0].cnt - массив сдвигов между трассами
70  текущей базы, накопленных по предыдущим базам, включающим те же
71  трассы, накапливаются сдвиги только кондиционных пар трасс,
72  comp->qual[i], i=0,comp[0].cnt - массив оценок подобия трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки подобия только кондиционных трасс, comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
73  текущей базы, накопленных по предыдущим базам, включающим те же
74  трассы, накапливаются оценки подобия только кондиционных трасс,
75  comp->energy[i],i=0,comp[0].cnt - массив оценок среднеквадратических амплитуд трасс текущей базы, накопленных по предыдущим базам, включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
76  амплитуд трасс текущей базы, накопленных по предыдущим базам,
77  включающим те же трассы, накапливаются оценки только кондиционных трасс, info.zeroTrace - количество нулевых трасс в базе, info.shortWnd - количесво сдвигов при формировании матрицы ФВК, достигших величины param->CFP */ /******************* GetCCFMatrix **********************/ int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf, int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp, float *amp, float *sm, float *f, float *fms, float *f0, double *ssm, PolicorInfo * info); /* Назначение: Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
78  трасс,
79  info.zeroTrace - количество нулевых трасс в базе,
80  info.shortWnd - количесво сдвигов при формировании матрицы ФВК,
81  достигших величины param->CFP
82 */
83 
84 /******************* GetCCFMatrix **********************/
85 int GetCCFMatrix (float *tr, int ntr, int cntSamples, int rebuild, int nf,
86  int nl, int nr, int nfk, int kfk, int curcmp, int cntcmp,
87  float *amp, float *sm, float *f, float *fms, float *f0,
88  double *ssm, PolicorInfo * info);
89 /* Назначение:
90  Формирование верхних треугольных матриц ФВК (f) и оценок подобия трасс (fms) для входной совокупности трасс (tr) размером (ntr). Вх. данные: tr - указатель на массив трасс одноименной компоненты размером ntr*cntSamples, ntr - количество трасс в базе, cntSamples - количество отсчетов в трассе, rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только последнего столбца матрицы, пересылка остальных ФВК из матрицы для предыдущего положения скользящей базы, 1 - полный расчет текущей матрицы ФВК, nf - количество отсчетов в ФВК, nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК, curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
91  (fms) для входной совокупности трасс (tr) размером (ntr).
92 
93  Вх. данные:
94  tr - указатель на массив трасс одноименной компоненты размером
95  ntr*cntSamples,
96  ntr - количество трасс в базе,
97  cntSamples - количество отсчетов в трассе,
98  rebuild - флага режима заполнения матрицы ФВК: 0 - расчет только
99  последнего столбца матрицы, пересылка остальных ФВК
100  из матрицы для предыдущего положения скользящей базы,
101  1 - полный расчет текущей матрицы ФВК,
102  nf - количество отсчетов в ФВК,
103  nl, nr - левая (<0) и правая (>0) границы диапазона поиска сдвига,
104  nfk, kfk - индексы трассы, определяющие начало и конец окна расчета ФВК,
105  curcmp, cntcmp - индекс текущей компоненты и количество компонент, amp - массив размером ntr среднеквадратических оценок амплитуд трасс в окне Вых. данные: sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
106  amp - массив размером ntr среднеквадратических оценок амплитуд трасс
107  в окне
108 
109  Вых. данные:
110  sm[k],k=1,ntr -массив сред. значений по k-тому ряду к-тов подобия, исключая автокорреляцию, т.е. массив оценок коррелируемости k-той трассы со всеми остальными трассами базы, f - верхняя треугольная матрица нормированных ФВК входного массива трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, если cntcmp>1, в матрицу на место текущей ФВК записывается сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
111  исключая автокорреляцию, т.е. массив оценок коррелируемости
112  k-той трассы со всеми остальными трассами базы,
113  f - верхняя треугольная матрица нормированных ФВК входного массива
114  трасс tr размером nf * sumNR, nf - длина ФВК, sumNR - количество
115  ФВК в треугольной матрице, равное сумме чисел от 1 до ntr,
116  если cntcmp>1, в матрицу на место текущей ФВК записывается
117  сумма ФВК соответствующих компонент трассы, нормированная на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
118  на произведение среднеквадратичных оценок амплитуд коррелируемых трасс, fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
119  трасс,
120  fms - верхняя треугольная матрица оценок подобия трасс (максимумов нормированных ФВК) входного массива tr размером sumNR, sumNR - количество оценок в треугольной матрице, равное сумме чисел от 1 до ntr, ssm - сумма всех оценок подобия матрицы ФВК, info - указатель на информационную структуру о некорректных ситуациях, info->zeroTrace - количество нулевых трасс в базе, info->shortWnd - количество ФВК в матрице, имеющих максимумы на границах диапазона поиска сдвигов. Вспомогательные массивы: f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
121  нормированных ФВК) входного массива tr размером sumNR, sumNR -
122  количество оценок в треугольной матрице, равное сумме чисел от 1
123  до ntr,
124  ssm - сумма всех оценок подобия матрицы ФВК,
125  info - указатель на информационную структуру о некорректных ситуациях,
126  info->zeroTrace - количество нулевых трасс в базе,
127  info->shortWnd - количество ФВК в матрице, имеющих максимумы на
128  границах диапазона поиска сдвигов.
129 
130  Вспомогательные массивы:
131  f0 - массив значений текущей ФВК Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно обращаться cntcmp раз, последовательно посылая в массив tr трассы очередной компоненты */ /******************* ElimTrBySimilar **********************/ int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim, int *ntro, float *fms); /* Назначение: Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
132 
133  Примечание. Для трехкомпонентных данных к функции GetCCFMatrix нужно
134  обращаться cntcmp раз, последовательно посылая в массив tr
135  трассы очередной компоненты
136 */
137 
138 
139 /******************* ElimTrBySimilar **********************/
140 int ElimTrBySimilar (int ntr, int *ir, double *ssm, float *sm, float levelSim,
141  int *ntro, float *fms);
142 /* Назначение:
143  Отбраковка трасс в базе из ntr трасс из числа актуальных трасс (для которых ir[i] на входе =1). Отбраковывются те трассы, средние коэффициенты подобия которых со всеми остальными трассами базы ( массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
144  которых ir[i] на входе =1). Отбраковывются те трассы, средние
145  коэффициенты подобия которых со всеми остальными трассами базы (
146  массив sm[i],i=0,ntr-1) не превышают значения предельно допустимого
147  коэффициента подобия levelSim. ssm - значение суммы коээфициентов подобия всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
148  всех возможных пар необракованных трасс базы, которое должно быть больше любого из значений sm[i],i=0,ntr-1 (это значение получено в функции GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
149  любого из значений sm[i],i=0,ntr-1 (это значение получено в функции
150  GetCCFMatrix). fms - верхняя треугольная матрица коэффициентов подобия, используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки каждой трассы. На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1. В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе. ntro - число неотбракованных трасс после их отбраковки. Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс. */ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
151  используемая для пересчета значений sm[i],i=0,ntr-1 и ssm после отбраковки
152  каждой трассы.
153  На выходе формируется массив признаков отбраковки трасс ir[i],i=0,ntr-1.
154  В нем 1 соответсвует неотбракованной трассе, 0 - отбракованной трассе.
155  ntro - число неотбракованных трасс после их отбраковки.
156  Массив sm[i],i=0,ntr-1 пересчитывается с учетом отбракованных трасс.*/ /******************* SelectCCFRowMaxRank **********************/ int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro, int nf, int *ir, float *sm, float *f); /* Назначение: Ранжирование строк матрицы ФВК f - формирование массива индексов строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки - значение оценки подобия из массива sm для данной строки матрицы. Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
157 */
158 
159 /******************* SelectCCFRowMaxRank **********************/
160 int SelectCCFRowMaxRank (float *fmr, int *irn, int ntr, int ntro,
161  int nf, int *ir, float *sm, float *f);
162 /* Назначение:
163  Ранжирование строк матрицы ФВК f - формирование массива индексов
164  строк irn матрицы ФВК f в порядке убывания их рангов. Ранг строки -
165  значение оценки подобия из массива sm для данной строки матрицы.
166  Формирование строки ФВК fmr, имеющей максимальный ранг - выбор ее из матрицы ФВК f. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных трасс в базе, nf - количество отсчетов в ФВК, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована sm - массив размером ntr оценок подобия трасс, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг, irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов */ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
167  ее из матрицы ФВК f.
168 
169  Вх. данные:
170  ntr - количество трасс в базе,
171  ntro - количество неотбракованных трасс в базе,
172  nf - количество отсчетов в ФВК,
173  ir - массив размером ntr признаков отбраковки трасс:
174  0 - трасса отбракована, 1 - трасса неотбракована
175  sm - массив размером ntr оценок подобия трасс,
176  f - верхняя треугольнаф матрица ФВК размером nf * sumNR,
177  sumNR - количество ФВК в треугольной матрице, равное
178  сумме чисел от 1 до ntr,
179 
180  Вых. данные:
181  fmr - строка матрицы ФВК f размером ntr*nf, имеющая максимальный ранг,
182  irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов*/ /************** ShiftsAndSimEstByStackCCFRows ****************/ int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro, int nf, int nl, int nr, float levelSim, int *ir, int *irn, float *fmr, float *sf, float *f, float *fs, float *f0, float *slr); /* Назначение: Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i], i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по синфазно накопленным в pанжиpованном поpядке pядам ФВК. Вх. данные: ntr - количество трасс в базе, ntro - количество неотбракованных рядов в матрице ФВК, nf - количество отсчетов в ФВК, nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига, levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
183 */
184 
185 
186 /************** ShiftsAndSimEstByStackCCFRows ****************/
187 int ShiftsAndSimEstByStackCCFRows (float *del, float *sm, int ntr, int *ntro,
188  int nf, int nl, int nr, float levelSim,
189  int *ir, int *irn, float *fmr, float *sf,
190  float *f, float *fs, float *f0,
191  float *slr);
192 /* Назначение:
193  Определение сдвигов del[i],i=0,ntr-1 и коэффициентов подобия sm[i],
194  i=0,ntr-1 трасс базы относительно трассы с максимальным рангом по
195  синфазно накопленным в pанжиpованном поpядке pядам ФВК.
196 
197  Вх. данные:
198  ntr - количество трасс в базе,
199  ntro - количество неотбракованных рядов в матрице ФВК,
200  nf - количество отсчетов в ФВК,
201  nl,nr - левая (<0) и правая (>0) границы диапазона поиска сдвига,
202  levelSim - минимально допустимое значение коэффициента подобия трассы, при котором она еще полагается кондиционной, ir - массив размером ntr признаков отбраковки трасс: 0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
203  трассы, при котором она еще полагается кондиционной,
204  ir - массив размером ntr признаков отбраковки трасс:
205  0 - трасса отбракована, 1 - трасса неотбракована irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
206  irn - массив индексов строк матрицы ФВК f в порядке убывания их рангов размером ntro, fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг, f - верхняя треугольнаф матрица ФВК размером nf * sumNR, sumNR - количество ФВК в треугольной матрице, равное сумме чисел от 1 до ntr, Вых. данные: del - массив (размером ntr) сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом, sm - массив (размером ntr) оценок подобия трасс базы относительно трассы с максимальным рангом, В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
207  размером ntro,
208  fmr - ряд матрицы ФВК f размером ntr*nf, имеющий максимальный ранг,
209  f - верхняя треугольнаф матрица ФВК размером nf * sumNR,
210  sumNR - количество ФВК в треугольной матрице, равное
211  сумме чисел от 1 до ntr,
212 
213  Вых. данные:
214  del - массив (размером ntr) сдвигов (безразмерных ) трасс базы
215  относительно трассы с максимальным рангом,
216  sm - массив (размером ntr) оценок подобия трасс базы относительно
217  трассы с максимальным рангом,
218  В случае дополнительной отбраковки по подобию трасс: ntro - измененное количество неотбракованных трасс в базе, ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
219  ntro - измененное количество неотбракованных трасс в базе,
220  ir - измененный массив размером ntr признаков отбраковки трасс Вспомогательные массивы: sf - ряд ФВК, синфазно накопленных по столбцам матрицы f, размером ntr*nf, slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом, f0 - массив значений текущей ФВК размером nf, fs - массив значений суммы по ряду ФВК от ФВК размером nf, */ /************** StackParByBases ****************/ int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir, float *del, float *sm, float *amp); /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
221 
222  Вспомогательные массивы:
223  sf - ряд ФВК, синфазно накопленных по столбцам матрицы f,
224  размером ntr*nf,
225  slr - ряд матрицы ФВК f размером ntr*nf с текущим рангом,
226  f0 - массив значений текущей ФВК размером nf,
227  fs - массив значений суммы по ряду ФВК от ФВК размером nf,
228 
229 */
230 
231 /************** StackParByBases ****************/
232 int StackParByBases (int ntr, float dt, Trace4Stack * comp, int *ir,
233  float *del, float *sm, float *amp);
234 /* Назначение: Формирование массива (comp->shifts) сдвигов в мс между трассами текущей базы, полученных по значениям сдвигов (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
235  трассами текущей базы, полученных по значениям сдвигов
236  (безразмерных ) трасс базы относительно трассы с максимальным рангом (del), сложенным с накопленными сдвигами по предыдущим базам, включающим те же трассы. Для пересчета в мс используется шаг дискретизации (dt). Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
237  рангом (del), сложенным с накопленными сдвигами по
238  предыдущим базам, включающим те же трассы. Для пересчета в мс
239  используется шаг дискретизации (dt).
240  Формирование массива (comp->qual) оценок подобия трасс базы по значениям массива (sm), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
241  по значениям массива (sm), сложенным с накопленными оценками по
242  предыдущим базам, включающим те же трассы.
243  Формирование массива (comp->energy) оценок среднеквадратических амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
244  амплитуд трасс базы по значениям массива (amp), сложенным с накопленными оценками по предыдущим базам, включающим те же трассы. Для всех массивов: накапливаются оценки только кондиционных трасс, ( признаки кондиционности - в массиве ir), размерность массивов ntr. */ int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog, float leftWin,int lengWin,int samplesCount, float dt); /* Назначение: Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по времени годографа для центральной трассы базы (hodog в мс), смещению окна влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах), начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
245  накопленными оценками по предыдущим базам, включающим те же трассы.
246  Для всех массивов: накапливаются оценки только кондиционных трасс,
247  ( признаки кондиционности - в массиве ir), размерность массивов ntr.
248 */
249 
250 int SetWinBorders(int *iWinBeg, int *iWinEnd, Trace4Stack *comp, float hodog,
251  float leftWin,int lengWin,int samplesCount, float dt);
252 /* Назначение:
253  Определение индексов начала iWinBeg и конца iWinEnd окна корреляции по
254  времени годографа для центральной трассы базы (hodog в мс), смещению окна
255  влево от годографа (leftWin в мс), длине окна (lengWin в отсчетах),
256  начальному времени центральной трассы comp[0].hdr[imid].TBC и шагу дискретизации dt. samplesCount - количество отсчетов в трассе. */ /* iRound: Округляет float -> int до ближ. целого */ int iRound(float value); /* Вычисление суммы ntr чисел натурального ряда */ int SumNatNumbers(int ntr); #ifdef __cplusplus }; #endif /* C++ */ /***********************************************************************/ #endif /* __polyCor_h */
257  дискретизации dt. samplesCount - количество отсчетов в трассе.
258 */
259 
260 /* iRound: Округляет float -> int до ближ. целого */
261 int iRound(float value);
262 
263 /* Вычисление суммы ntr чисел натурального ряда */
264 int SumNatNumbers(int ntr);
265 
266 #ifdef __cplusplus
267 };
268 #endif /* C++ */
269 
270 /***********************************************************************/
271 #endif /* __polyCor_h */
Definition: polyCor.h:14
Definition: Subcor.h:21
Definition: Subcor.h:58