【航迹识别】基于改进的 Hausdorff 距离的DBSCAN船舶异常行为识别附matlab代码

简介: 【航迹识别】基于改进的 Hausdorff 距离的DBSCAN船舶异常行为识别附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

随着海上交通量的迅猛增长以及海上交通环境日益复杂,船舶在生产活动中产生的时空轨迹也越来越多,如何对船舶异常轨迹进行有效的监控与管理,及时发现异常轨迹,是实现海上智能交通的关键技术之一,而及时发现异常轨迹的前提为获得船舶典型运动轨迹。由于传统的海上交通调查方法费时费力,且效率低下。而基于海量的船载AIS信息集合蕴藏着大量的海上交通特征,从中获取能够反映船舶行为规律的、有效的、潜在的信息,有利于进行海上交通调查获取数据信息。

⛄ 部分代码

clc

close all

clear all

% %%

% global noisenum

% % %% 数据路径

% % path='AIS1246-1.CSV';

% % %% 计算H距离

% % [data1,px,tempMapDis,tempMapV,tempMapHeading]=myHuasdoff(path);

% % Hdist = (tempMapDis + tempMapV + tempMapHeading) / 3;

% % %% 取距离中的较小值

% % for i = 1 : size(Hdist,1)

% %     for j = i + 1 : size(Hdist,2)

% %         max1 = Hdist(i,j);

% %         if max1 < Hdist(j,i)

% %             max1 = Hdist(j,i);

% %         end

% %         Hdist(i,j) = max1;

% %         Hdist(j,i) = max1;

% %     end

% % end

load data.mat

%% 设置聚类参数

eps=0.056;

MinNum=18;

%% DBscan 聚类

cluster_label=DBSCAN(Hdist,eps,MinNum);

%% 计算聚类数

cluster_num=max(cluster_label);

%% 计算轨迹平均位置

meanpos=zeros(length(cluster_label),2);

for i=1:length(cluster_label)

   meanpos(i,1)=mean(data1(data1(:,1)==i,2));

   meanpos(i,2)=mean(data1(data1(:,1)==i,3));

end

%% 画图

% %% plot trace

figure

Plottrace(data1,cluster_label)

title(sprintf(['DBSCAN聚类结果(航迹示意图) \n邻域距离 = ' num2str(eps) ', 最小样本数 = ' num2str(MinNum) '\n航迹类别:' num2str(cluster_num) '类,噪声航迹:' num2str(noisenum) '条']));

xlabel('经度')

ylabel('纬度')

%% plot meanpos

figure

Plotmeanpos(meanpos, cluster_label);

title(sprintf(['DBSCAN聚类结果(航迹平均坐标示意图) \n邻域距离 = ' num2str(eps) ', 最小样本数 = ' num2str(MinNum) '\n航迹类别:' num2str(cluster_num) '类,噪声航迹:' num2str(noisenum) '条']));

xlabel('经度')

ylabel('维度')

% 逐类计数典型轨迹

filename='典型轨迹数据.xlsx';

DXcolor={'black','magenta'};

DXindexlist=[15,36];

Legendslist={'主航道出口船舶典型轨迹','主航道进口船舶典型轨迹'};


for k=1:cluster_num

   data_ind=[];

   temp_trace_ind=find(cluster_label==k);

   for t=1:length(temp_trace_ind)

       data_ind1=find(data1(:,1)==temp_trace_ind(t));

       data_ind=[data_ind;data_ind1];

   end

   %     Legendsname = ['第' num2str(k) '类航迹的典型航迹'];

   Legendsname=Legendslist{k};

   [DXfinalData{k},DXdatanew{k},DXpx{k},DXfData{k},DXMapDis{k},DXMapV{k},DXMapHeading{k}]=DXGJ(data1(data_ind,:),DXcolor{k},Legendsname,DXindexlist(k));

   datawriter(filename,DXfData{k},Legendsname)% end

end


% %%

% addpath '识别数据集'

% filename_train_in1='进口正常行为数据.xlsx';

% filename_train_in0='进口异常行为数据.xlsx';

addpath '正常与异常数据'

filename_train_in1='进口正常轨迹数据.xlsx';

filename_train_in0='进口异常轨迹数据.xlsx';

[data_in1,finalData_in1]=makeData(filename_train_in1);

[data_in0,finalData_in0]=makeData(filename_train_in0);

stepNum=20;

DistThre=linspace(1,250,stepNum);

SogThre=linspace(1,8,stepNum);

CogThre=linspace(1,8,stepNum);

%

% DistThre=1:0.01:250;

DXTrace=DXfData{2};

% ACC_P=[];

% ACC_S=[];

% ACC_C=[];

for i=1:stepNum

   tDistThre=DistThre(i);

   tSogThre=SogThre(i);

   tCogThre=CogThre(i);

   [ACC_P(i),ACC_S(i),ACC_C(i)]=drawErrerRate(finalData_in1,finalData_in0,DXTrace,tDistThre,tSogThre,tCogThre);

end

%%

filename='阈值.xlsx';

data=xlsread(filename);

figure

plot(DistThre,[ACC_P.r],'-gp','DisPlayName','准确率')

hold on

plot(DistThre,1-[ACC_P.r],'-rd','DisPlayName','误警率')

xlabel('位置偏差')

legend

figure

plot(SogThre,[ACC_S.r],'-gp','DisPlayName','准确率')

hold on

plot(SogThre,1-[ACC_S.r],'-rd','DisPlayName','误警率')

xlabel('航速偏差')

legend

figure

plot(CogThre,[ACC_C.r],'-gp','DisPlayName','准确率')

hold on

plot(CogThre,1-[ACC_C.r],'-rd','DisPlayName','误警率')

xlabel('航向偏差')

legend

% 2类:进口 1类出口

global DistThre SogThre CogThre

DistThre=60;

SogThre=2.8;

CogThre=3.8;

addpath '正常与异常数据'

filename_in='验证进口道船舶异常行为.xlsx';

tracetype=input('请选择要验证的船舶类型:1(出口)/ 2(进口)');

try

DXTrace=DXfData{tracetype};

catch

   disp('输入错误')

   return

end

checkTrace(filename_in,DXTrace);

⛄ 运行结果

⛄ 参考文献


⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
2月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
119 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
2月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
92 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络的步态识别matlab仿真,数据库采用CASIA库
**核心程序**: 完整版代码附中文注释,确保清晰理解。 **理论概述**: 利用CNN从视频中学习步态时空特征。 **系统框架**: 1. 数据预处理 2. CNN特征提取 3. 构建CNN模型 4. 训练与优化 5. 识别测试 **CNN原理**: 卷积、池化、激活功能强大特征学习。 **CASIA数据库**: 高质量数据集促进模型鲁棒性。 **结论**: CNN驱动的步态识别展现高精度,潜力巨大,适用于监控和安全领域。
|
2月前
|
机器学习/深度学习 监控 算法
基于深度学习网络的人员行为视频检测系统matlab仿真,带GUI界面
本仿真展示了基于GoogLeNet的人员行为检测系统在Matlab 2022a上的实现效果,无水印。GoogLeNet采用创新的Inception模块,高效地提取视频中人员行为特征并进行分类。核心程序循环读取视频帧,每十帧执行一次分类,最终输出最频繁的行为类别如“乐队”、“乒乓球”等。此技术适用于智能监控等多个领域。
55 4
|
2月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
67 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于CNN卷积神经网络的MQAM调制识别matlab仿真
**理论**: 利用CNN自动识别MQAM调制信号,通过学习星座图特征区分16QAM, 64QAM等。CNN从原始数据提取高级特征,优于传统方法。 - **CNN结构**: 自动特征学习机制,适配多种MQAM类型。 - **优化**: 损失函数指导网络参数调整,提升识别准确度。 - **流程**: 大量样本训练+独立测试评估,确保模型泛化能力。 - **展望**: CNN强化无线通信信号处理,未来应用前景广阔。
|
3月前
|
机器学习/深度学习 算法 BI
基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真
**摘要:** 本文介绍了使用MATLAB2022a实现的基于GoogLeNet的USB摄像头手势识别系统。系统通过摄像头捕获视频,利用深度学习的卷积神经网络进行手势检测与识别。GoogLeNet网络的Inception模块优化了计算效率,避免过拟合。手势检测涉及RPN生成候选框,送入网络进行分类。系统架构包括视频采集、手势检测与识别、以及决策反馈。通过GPU加速和模型优化保证实时性能,应用于智能家居等场景。
|
4月前
|
机器学习/深度学习 算法 数据可视化
基于googlenet深度学习网络的睁眼闭眼识别算法matlab仿真
**算法预览图展示睁眼闭眼识别效果;使用Matlab2022a,基于GoogLeNet的CNN模型,对图像进行分类预测并可视化。核心代码包括图像分类及随机样本显示。理论概述中,GoogLeNet以高效Inception模块实现眼部状态的深度学习识别,确保准确性与计算效率。附带三张相关图像。**
|
5月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)

热门文章

最新文章

下一篇
无影云桌面