(MATLAB代码) 船舶轨迹聚类:K-means 算法(260912)

1. 算法识别

这段 MATLAB 代码使用的是 K-means 聚类算法 。代码中通过 kmeans(coords, numClusters) 函数对船舶 AIS 轨迹的经纬度坐标进行聚类,将轨迹点划分为 200 个簇。

2. 核心代码解析

以下是代码中与 K-means 聚类相关的关键部分:

matlab 复制代码
% 使用K-means进行聚类
numClusters = 200;  % 设定聚类的簇数,需要根据数据情况调整
% 提取经纬度点
coords = [CF.Lon, CF.Lat];
% 使用K-means算法进行聚类
[idx, C] = kmeans(coords, numClusters);

其中:

  • numClusters = 200:指定聚类簇数为 200。
  • coords = [CF.Lon, CF.Lat]:提取所有轨迹点的经纬度作为聚类输入特征。
  • [idx, C] = kmeans(coords, numClusters):执行 K-means 聚类,返回每个点的簇标签 idx 和簇中心坐标 C。

3. K-means 算法原理

K-means 是一种基于划分的经典无监督聚类算法,其核心思想是将 n 个样本划分为 k 个簇,使得簇内样本之间的相似度最高、簇间相似度最低。算法步骤如下:

  1. 初始化:随机选择 k 个样本作为初始簇中心。
  2. 分配:计算每个样本到各簇中心的距离(通常为欧氏距离),将其分配到最近的簇。
  3. 更新:重新计算每个簇的质心(即簇内所有样本的均值),作为新的簇中心。
  4. 迭代:重复步骤 2 和 3,直到簇中心不再变化或达到最大迭代次数。

4. 聚类结果可视化

代码中通过以下方式展示聚类结果:

matlab 复制代码
% 为每个簇分配不同的颜色
clusterColors = lines(numClusters);
% 绘制聚类结果
figure; geoaxes; hold on;
for k = 1:numClusters
    cluster = coords(idx == k, :);
    if ~isempty(cluster)
        geoscatter(cluster(:, 2), cluster(:, 1), 0.5, ...
            'MarkerEdgeColor', clusterColors(k, :), ...
            'MarkerFaceColor', clusterColors(k, :));
    end
end
% 绘制聚类中心点
geoscatter(C(:, 2), C(:, 1), 8, 'r*', 'LineWidth', 2);
title('K-means Clustered Ship Trajectories');
geobasemap topographic;

每个簇使用不同颜色绘制轨迹点,红色星号标记簇中心位置,便于观察船舶轨迹的空间聚集特征。

5. 聚类结果保存

聚类完成后,代码将结果保存为 CSV 文件:

matlab 复制代码
% 保存聚类结果和聚类中心点
CF.Cluster = idx;
writetable(CF, fullfile(outpath, 'AIS_kmeans_clustered.csv'));
C_table = array2table(C, 'VariableNames', {'Lon', 'Lat'});
writetable(C_table, fullfile(outpath, 'Cluster_Centers.csv'));
  • AIS_kmeans_clustered.csv:包含原始轨迹数据及每个点所属的簇标签。
  • Cluster_Centers.csv:保存 200 个簇中心的经纬度坐标。

6. 总结

该代码使用 K-means 聚类算法对船舶 AIS 轨迹点进行空间聚类分析,通过设定 200 个簇将轨迹点按地理位置分组,并在地图上可视化聚类结果和簇中心,适用于分析船舶活动密集区域和典型航线模式。

6.1数据

6.2代码数据路径

7所有代码获取

(MATLAB代码) 船舶轨迹聚类:K-means 算法(260912)https://mbd.pub/o/bread/mbd-YZaVlJ5qag==

相关推荐
y1su1 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划
residual_fan1 小时前
船用柴油机动态机动工况故障诊断:控制感知仿射网络(CAAN)的技术实现
人工智能·算法·数据挖掘·数据分析
其实防守也摸鱼2 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
蓝悦无人机2 小时前
《Planning algorithms》读书笔记——第8章 反馈运动规划
算法·读书笔记·反馈运动规划
RaaS1003 小时前
Agent Skills 进了 Linux Foundation:2.8 亿次安装,但装 skill 还没有安全规范
人工智能·算法·架构
CV爱数码3 小时前
CT 重建从零开始(五):ASTRA Toolbox 上手——几何、投影器与算法
图像处理·算法·计算机视觉·ct
TunerT_TQ3 小时前
超立方体Ramsey(openai/math 家族171)H11攻坚日志|D60–D69:Star分组重数、二幂坐标群、奇偶入射语义与Site‑Level候选计数形式化闭环
算法
风巽·剑染春水3 小时前
【数据处理】Matlab 环境下安装 SPM 与 CAT 工具并进行脑核磁数据预处理
matlab·spm·cat·脑部核磁·t1w图像
Rabitebla3 小时前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
机器学习之心3 小时前
把 PINN 塞进群智能反演:一次可审计的结构损伤识别 MATLAB 复现
matlab