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

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.dtcms.com/a/343528.html

相关文章:

  • [RestGPT] docs | RestBench评估 | 配置与环境
  • 【51单片机】【protues仿真】基于51单片机16键电子琴系统
  • 【GPT入门】第51课 Conda环境迁移教程:将xxzh环境从默认路径迁移到指定目录
  • OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测
  • Mysql事务特性
  • python实现根据接口返回数据生成报告和图表
  • (第二十期下)超链接的更多分类
  • 医疗元宇宙:破解医疗困局与数字化变革路径
  • gRPC 服务发现选型对比
  • 基于STM32单片机的二维码识别物联网OneNet云仓库系统
  • 最小生成树的普利姆算法和克鲁斯卡尔算法
  • ABP vNext 速率限制在多租户场景落地
  • Leetcode 深度优先搜索 (13)
  • Leetcode 深度优先搜索 (12)
  • 20250821 圆方树总结
  • 通信基础理论
  • C语言基础习题——01
  • plantsimulation小知识25.08.21 对话框的使用方法
  • 深圳大学-计算机信息管理课程实验 C++ 自考模拟题
  • 【LeetCode】18. 四数之和
  • C语言:字符函数与字符串函数(2)
  • ORA-16331: container is not open ORA-06512: at “SYS.DBMS_LOGMNR“
  • Hexo 博客图片托管:告别本地存储,用 PicGo + GitHub 打造高速稳定图床
  • ArcMap 数据框裁剪(Data Frame Clip)操作教程
  • Service方法事务失效的原因是什么?
  • 2025-08-21 Python进阶8——命名空间作用域
  • PiscCode实现MediaPipe 的人体姿态识别:三屏可视化对比实现
  • 算法题Day4
  • WaitForSingleObject函数详解
  • JavaScript 性能优化实战技术文章大纲