基于可视图算法的时间序列复杂网络分析系统
项目介绍
本项目致力于实现一维时间序列到复杂网络的跨域转换与分析。核心机理基于可视图(Visibility Graph, VG)算法,将时间序列中的数据点抽象为网络节点,并根据几何可见性建立边连接。通过这种转换,复杂的非线性动力学过程被转化为拓扑结构特征,使得研究者能够利用图论工具挖掘数据中隐藏的周期性、分形性及演化规律。系统集成了从信号生成、网络构建、特征提取到可视化展示的完整流程,为非线性信号处理提供了高效的分析方案。
功能特性
- 自动构建可视图网络:能够将输入的数值型时间序列根据线性插值准则转换为无向无权网络。
- 拓扑特征深度提取:系统可计算并输出节点度分布、局部聚集系数及全局平均聚集系数等关键指标。
- 多维可视化矩阵展示:提供原始波形、邻接矩阵热力图、力导向网络拓扑图、度分布直方图及可见性连线示意图等六大维度视觉分析。
- 统计报告输出:在控制台实时反馈网络节点数、边数、平均度、网络密度等宏观统计量。
系统要求
- 软件环境:MATLAB R2016b 及以上版本(需支持 graph 对象及相关绘图函数)。
- 工具箱需求:基础 MATLAB 运行环境即可,无需额外特殊工具箱。
实现逻辑说明
- 环境与数据预处理
程序启动后首先执行环境清空,随后生成一段采样频率为 100Hz 的合成信号,该信号由 5Hz 的正弦波与随机高斯噪声叠加而成。为了保证计算效率与可视化清晰度,系统采用滑动窗口截取前 100 个数据点作为分析样本。
- 核心算法实现:可视图(VG)构建
程序通过嵌套循环遍历时间序列中的每一对数据点 (i, yi) 和 (j, yj)。对于每一对点,系统会检查其间所有的中间点 (k, yk)。判定逻辑遵循可视图标准准则:若所有中间点 yk 都满足在连接 (i, yi) 和 (j, yj) 的直线下方,即 yk < yj + (yi - yj) * (tj - tk) / (tj - ti),则判定 i 与 j 具备可见性。一旦可见性成立,程序将在对称邻接矩阵的对应位置置 1。
- 网络指标计算逻辑
- 节点度:通过对邻接矩阵进行行求和,计算每个节点连接的边数。
- 局部聚集系数:定位每个节点的邻居子图,统计邻居之间实际存在的边数,并除以该节点邻居间可能存在的最大边数 [ki * (ki - 1) / 2]。
- 全局平均聚集系数:对所有节点的局部聚集系数进行算术平均,用于衡量网络的整体集团化程度。
- 网络密度:计算实际边数与完全图边数的比值。
- 可视化映射方案
系统将结果集成在一个 3x2 的组合画布中:
- 序列展示:绘制原始时间序列的波形与采样点。
- 结构特征:通过热力图展示邻接矩阵的稀疏结构;利用力导向布局算法(Force-directed Layout)生成网络的拓扑三维形态。
- 指标分布:通过条形图展示各节点的局部聚集系数,通过直方图通过统计度值的分布频率。
- 几何关联:在时间序列上方随机抽取部分边进行连线,直观呈现数据点之间的“可见”关系。
关键函数与算法细节分析- 线性插值判定算法
这是系统的核心,位于三层嵌套循环的最内层。该算法利用几何斜率逻辑判断视线是否被阻挡。其数学本质是将时间序列的波动转化为节点的连接概率。对于周期信号,该算法生成的网络具有规则的结构;对于随机序列,生成的网络趋向于随机图特征。
- 聚集系数计算模块
该模块通过 find 函数检索节点的邻近拓扑关系,并提取子矩阵。通过计算子矩阵的元素和来获取邻居间的闭合三角数量。这一指标在代码设计上考虑了孤立节点(度小于2的情况),通过条件分支避免了除以零的错误,保证了算法的鲁棒性。
- 拓扑图生成模型
利用 MATLAB 内置的 graph 函数将邻接矩阵对象化,并配合 force 布局渲染。通过调整 EdgeAlpha 透明度参数,使得在节点较多时仍能清晰分辨网络的骨架结构。
- 统计报告模块
代码通过 fprintf 函数格式化输出网络的基础特征。其中网络密度的计算公式为 [所有度之和 / (N * (N - 1))],这准确地描述了当前动力系统在拓扑空间中的连接饱和度。