58 lines
2.1 KiB
C++
58 lines
2.1 KiB
C++
#ifndef TRACK_ASSO_H
|
|
#define TRACK_ASSO_H
|
|
|
|
#include "data_process_class_dll.h"
|
|
#include "parameters.h"
|
|
#include "struct.h"
|
|
#include <vector>
|
|
|
|
using namespace std;
|
|
|
|
/******************************* 航迹关联类 **************************************************/
|
|
class Track_Asso
|
|
{
|
|
public:
|
|
int track_asso_process(std::vector <PointRecv> *point_recv, //点迹文件
|
|
std::vector <Trust_Track> *trust_track, //航迹文件
|
|
struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //更新航迹信息
|
|
int *Trust_track_num_Output, //更新航迹数
|
|
struct RadarPara Work_Parameter //工作参数
|
|
);
|
|
|
|
Track_Asso();
|
|
void reset();
|
|
private:
|
|
|
|
//要处理的点迹
|
|
std::vector<PointRecv> point_process;
|
|
|
|
//IMM
|
|
void model_interaction(std::vector <Trust_Track> *trust_track); //模型交互
|
|
|
|
void model_filter(std::vector <Trust_Track> *trust_track, //滤波
|
|
struct RadarPara Work_Parameter
|
|
);
|
|
|
|
void model_output(std::vector <Trust_Track> *trust_track ); //模型输出
|
|
|
|
void IMM_d_cal(double v_track,
|
|
double X1[6], double P1[6][6],
|
|
double X2[6], double P2[6][6],
|
|
double X3[6], double P3[6][6],
|
|
double Z[3], double prt,double freq_ind,
|
|
double delta_T,
|
|
double *d1,double *d2,double *d3,
|
|
struct RadarPara Work_Parameter);
|
|
|
|
void IMM_F_Q_gen(double v_track, double delta_T,double F[6][6], double Q1[6][6], double Q2[6][6], double Q3[6][6],struct RadarPara Work_Parameter);
|
|
|
|
double Pt[3][3]; //模型转移概率
|
|
|
|
//高度维更新
|
|
void track_hight_update(int updata_track_index, //更新的航迹号
|
|
int asso_point_index, //点迹号
|
|
std::vector <Trust_Track> *trust_track //航迹
|
|
);
|
|
};
|
|
#endif // TRACK_ASSO_H
|