def RadarDataRelateBasedonMachineLearning(realData = False, machineLearnEnable = False,mlModelType = 'KNN', totalSimuFile = 30, totalFramePerSimu = 10):
    mlModel = None
    if machineLearnEnable == True:#训练机器学习模型
        mlModel = RadarMl.RadarML(mlModelType)
        mlModel.DatasetProc(simu=True,scale_en= True, poly_en=False)
        mlModel.Train()
    if realData == True:#如果利用真实航迹作为数据源,则需要将真实数据进行分帧处理
        Frame.FrameCreat(save_en=True, plot_en=True, fakerate=50, sample_rate=5)

    for simuFileNo in range(totalSimuFile):    #对每一个仿真文件进行航迹关联处理
        processOutput = sys.stdout  # 标准图像输出
        plt.figure(figsize=(5, 40), dpi=100)  # 设置输出图像画布大小
        plt.vlines(x=[-5.5, -1.8, 1.8, 5.5], ymin=0, ymax=40, colors='yellow')  # 画出车道线

        tmpTracksList, totalTmpTracks = tmpTracksListInit()               #初始化临时航迹列表
        tmpStoragePoints,totalTmpStoragePoints = tmpStoragePointsInit()   #初始化临时点迹列表

        for frameNo in range(totalFramePerSimu):   #从文件中读取每帧量测
            if realData == True:
                frameInfor = Frame.FrameRead(frameNo)
            else:
                frameInfor = Frame.SimuFrameRead(simuFileNo,frameNo)

            count = frameNo / (totalFramePerSimu - 1) * 100   #计算显示每个仿真文件的处理进程
            processOutput.write(f'\r PROCESSING percent:{count:.0f}%')

            if machineLearnEnable == True:#机器学习模型应用于雷达量测分类
                frameInfor, mlMissPoints = mlModel.Applicate(frameInfor,scale_en=True)
            else:
                mlMissPoints  = pd.DataFrame([],columns=['Angle','Speed','X_position','Y_position','Target'])
            #对雷达量测进行航迹关联
            [frameInfor, tmpTracksList, tmpStoragePoints, totalTmpStoragePoints] = TrackRelate(frameInfor, tmpTracksList, totalTmpTracks, tmpStoragePoints, totalTmpStoragePoints,mlModel,machineLearnEnable = machineLearnEnable)
            #删除关联失败的航迹信息
            [tmpTracksList, totalTmpTracks, tmpStoragePoints, totalTmpStoragePoints, delete_points] = TrackDelet(tmpTracksList, totalTmpTracks, tmpStoragePoints, totalTmpStoragePoints)
            #没有正确关联的点作为新航迹
            [tmpTracksList, totalTmpTracks] = TrackNewDevelop(frameInfor, tmpTracksList, totalTmpTracks)
            #绘制关联成功的航迹
            [tmpStoragePoints, totalTmpStoragePoints] = TrackDraw(frameInfor, tmpTracksList, tmpStoragePoints, totalTmpStoragePoints, delete_points,mlMissPoints=mlMissPoints)

        processOutput.flush
        plt.xlim((-7, 7))#坐标属性设置
        plt.ylim((0, 40))
        plt.xlabel("X(m)")
        plt.ylabel("Y(m)")
        plt.show()
        plt.pause(0)#暂停显示关联结果
    return