当前位置: 首页 > backend >正文

Wireshark数据包波形绘制异常

一、数据包波形绘制方法

Wireshark数据包波形绘制具体方法见我的另一篇博客:

Wireshark捕获电脑与路由器通信数据,绘制波形观察-CSDN博客

Wireshak捕获的数据包:

二、异常现象

波形连一起了:

三、问题剖析

3.1 绝对时间格式

观察下数据包发送时刻和长度:

不应该是上面图那样连在一起。

问题出在哪呢......

观察数据包间隔:

% 读取 Excel 文件
data = readtable('D:\无线通信网络认知\通信学报\5G信号\Wireshark USRP联合波形捕获\only 192.168.1.103.xlsx');% 查看前几行
head(data)% 单独取出时间和长度
time = data.Time;
length = data.Length;
% 基本清洗
mask = ~isnan(time) & ~isnan(length);
time   = time(mask);
length = length(mask);time = time*24*60*60;

对照MATLAB加载的EXCEL变量数值:

猛然发现,EXCEL中的Time这列不是时分秒绝对时间,实际上只有分和秒。所以,MATLAB打印表格中的0.70XXX这些数值实际上是分秒除以60分钟,得到的在1个小时中的比值。

我在EXCEL中通过调整单元格格式进行验证:

得到的数值:MATLAB加载自动转换后的数值:

破案了,就是把绝对时间的 “分:秒.秒小数” 当成了“时:分.秒”。

更正:

time = time*60*60;

3.2 小数保留位数

仔细看time变量,每个元素的小数是可以再往后保留几位的,同时也是递增的,说明保留的小数位数没问题:

但感觉MATLAB只用了前几位小数:

检查了一下,double变量打印时会自动调整小数位数,但是变量本身保留的小数位数是相当长的:

3.3 波形数值

yplot是01交替变换的,看起来也没有问题

四、波形绘制参数调整

4.1 尺度缩小

把matlab中time的处理程序更新下:

% 读取 Excel 文件
data = readtable('D:\无线通信网络认知\通信学报\5G信号\Wireshark USRP联合波形捕获\only 192.168.1.103.xlsx');% 查看前几行
% head(data)
data% 单独取出时间和长度
time = data.Time;
length = data.Length;
% 基本清洗
mask = ~isnan(time) & ~isnan(length);
time   = time(mask);
length = length(mask);time = time*60*60;

重新绘制波形:

结合上述yplot变量观察并没问题,我大概知道原因了。就是0到2500这段是空的,2500附近那根“线”实际上有很多信号。

放大信号:

继续放大:

知道为什么从2500附近才开始有信号了。捕获数据包时在51分左右,对应一个小时的0.7的位置。

0.7*3600秒=2,520秒!

破案了。

4.2 减去初值

先减去time初值,再绘图:

time = time-time(1);

4.3 采样时长异常

还是有点不对,我采集信号时长有16秒:

看了下Wireshark的原文,也是16s:

迷了,这0.7s的采集信号时长怎么出来的......???! ! !

51分=0.85小时:

搞错了,之前MATLAB和EXCEL的0.7XXX根本不是分钟除以60得到的......

从EXCEL的单元格格式切入:

总之就是,“0.0000”不适合直接用于日期格式。

4.4 EXCEL绝对时间显示异常

重新设置Time列,通过替换把前面的“分:”去掉:

原来的“.”变成“:”了:

又发现原来的Time列是时分秒的,单元格里只显示分:秒:

继续把16:的时去掉:

离谱,这数值乱七八糟的,不行:

得用自己设置的日期显示单元格格式:h:mm:ss.000

4.5 仅保留秒数值

显示上可以只保留秒了:

但是想把秒数值单独提取出来还是困难:

通过TEXT这种方式就是真正把秒数值单独提取到一列:

再以文本形式粘贴到新的一列,就真正得到数据包秒时刻的数值了:

五、完善程序,绘制最终波形

这个时候,再重新加载数据:

% 读取 Excel 文件
data = readtable('D:\无线通信网络认知\通信学报\5G信号\Wireshark USRP联合波形捕获\only 192.168.1.103.xlsx');% 查看前几行
% head(data)
data% 单独取出时间和长度
time = data.Time;
length = data.Length;
% 基本清洗
mask = ~isnan(time) & ~isnan(length);
time   = time(mask);
length = length(mask);time = time-time(1);

最终成功绘制出Wireshark捕获数据的波形图:

http://www.xdnf.cn/news/18331.html

相关文章:

  • 【Docker】在Ubuntu22.04上安装Docker
  • 药品追溯码(溯源码)采集系统(二):门诊发药后端
  • ZeroNews构建企业级安全网络架构
  • C++高频知识点(三十四)
  • 【领码课堂】让Java数据检索更智能——Bean Searcher全景解读
  • 广东省省考备考(第八十三天8.21)——言语、判断推理(强化训练)
  • 【Protues仿真】基于AT89C52单片机的舵机和直流电机控制
  • 无人机高科技,翱翔未来新天地
  • 嵌入式接口通识知识之PWM接口
  • 算法题(187):程序自动分析
  • 告别服务器!Amazon Lambda无服务开发实战指南
  • 云原生俱乐部-k8s知识点归纳(6)
  • 多模态大模型研究每日简报【2025-08-21】
  • 【STM32入门教程】新建工程
  • 开源代码——gtsam_points配置安装
  • 机器学习经典算法总结:K-Means聚类与集成学习(Bagging, Boosting, Stacking)
  • 桌面挂件不能承受之重——GIF
  • 机器学习之数据预处理学习总结
  • MybatisPlusAutoConfiguration源码阅读
  • 强化学习算法分类与介绍(含权重更新公式)
  • 深度解析Atlassian 团队协作套件(Jira、Confluence、Loom、Rovo)如何赋能全球分布式团队协作
  • Windows查看端口占用情况
  • 2025年物流大数据分析的主要趋势
  • 【LeetCode 热题 100】322. 零钱兑换——(解法二)自底向上
  • 嵌入式接口通识知识之SDIO接口
  • 聚铭安全管家平台2.0实战解码 | 安服篇(四):重构威胁追溯体系
  • 手写MyBatis第28弹:告别代理,直击本质:手写MyBatis SqlSession的增删改查奥秘
  • 「数据获取」《中国环境统计年鉴》(1998-2024)(获取方式看绑定的资源)
  • C# 编写一个XmlToDota的转换工具
  • Seaborn数据可视化实战:Seaborn入门-环境搭建与基础操作