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

m语言可视化log中的变量信息

前言

在项目开发及测试过程中,经常会和log信息打交道,比如:要查看某个变量的数值和趋势。相比逐行查找和分析,使用脚本来处理并可视化指定变量信息更加直观,且在对外作为自证材料时更显专业性和更具说服力。
由于目前工作中,多使用Matlab/Simulink开发SWC模块,本文就介绍m语言如何处理并可视化log中的变量信息。

m语言实现

log示例

可根据实际log内容,修改下文的解析代码

input_str = '2023-11-20 20:07:13,000 - log - INFO;
double = 1.1280
int = 1
hex = 0x1input_str = '2023-11-20 20:07:13,000 - log - INFO;
double = 25.1280
int = 10
hex = 0x10input_str = '2023-11-20 20:07:13,000 - log - INFO;
double = 3.1280
int = 2
hex = 0x2input_str = '2023-11-20 20:07:13,000 - log - INFO;
double = 45.1280
int = 20
hex = 0x20input_str = '2023-11-20 20:07:13,000 - log - INFO;
double = 5.1280
int = 3
hex = 0x3

解析int类型的数据

clear all; clc;
% 打开文件
filename  = 'log.txt'; file_id = fopen(filename, 'r');% 提取指定字符串后面的数字
str_pattern = '(?<=int = )(\d+)';% 读取文件内容
file_content = textscan(file_id, '%s', 'Delimiter', '\n');
file_content = file_content{1};j=1;
% 循环遍历每一行,提取匹配的浮点数并输出
for i = 1:length(file_content)current_line = file_content{i};str_match = regexp(current_line, str_pattern, 'match');% 转换匹配的数字if ~isempty(str_match)disp(str_match); disp(str_match{1});str_list(j) = str2double(str_match{1});j=j+1;end
end% 关闭文件
fclose(file_id);% 指定时间步长
step = 1;
for i = 1:length(str_list)Time(i) = step*i;
end
% 绘图
plot(Time, str_list, "r"); 
xlabel("Times"); ylabel("Value")

示例绘图结果
在这里插入图片描述

解析double类型的数据

clear all; clc;
% 打开文件
filename  = 'log.txt'; file_id = fopen(filename, 'r');% 提取指定字符串后面的数字
str_pattern = '(?<=double = )(\d+\.\d+)';% 读取文件内容
file_content = textscan(file_id, '%s', 'Delimiter', '\n');
file_content = file_content{1};j=1;
% 循环遍历每一行,提取匹配的浮点数并输出
for i = 1:length(file_content)current_line = file_content{i};str_match = regexp(current_line, str_pattern, 'match');% 转换匹配的数字if ~isempty(str_match)disp(str_match); disp(str_match{1});str_list(j) = str2double(str_match{1});j=j+1;end
end% 关闭文件
fclose(file_id);% 指定时间步长
step = 2;
for i = 1:length(str_list)Time(i) = step*i;
end
% 绘图
plot(Time, str_list, "r"); xlabel("Times"); ylabel("Value")

示例绘图结果
在这里插入图片描述

解析hex类型的数据

clear all; clc;
% 打开文件
filename  = 'log.txt'; file_id = fopen(filename, 'r');% 提取指定字符串(如:“str: ”)后面的数字
str_pattern = '(?<=hex = 0x)(\d+)';%好像只能借用整数来识别% 读取文件内容
file_content = textscan(file_id, '%s', 'Delimiter', '\n');
file_content = file_content{1};j=1;
% 循环遍历每一行,提取匹配的浮点数并输出
for i = 1:length(file_content)current_line = file_content{i};str_match = regexp(current_line, str_pattern, 'match');% 转换匹配的数字if ~isempty(str_match)disp(str_match); disp(str_match{1});%十六进制字符串转换为十进制数字str_list(j) = hex2dec(str_match{1});j=j+1;end
end% 关闭文件
fclose(file_id);% 指定时间步长
step = 10;
for i = 1:length(str_list)Time(i) = step*i;
end
plot(Time, str_list, "r"); 
xlabel("Times"); ylabel("Value")

示例绘图结果
在这里插入图片描述

结论

可根据实际log内容,修改上述解析代码,实现对应数据的数值提取和数值趋势信息的可视化输出。

http://www.dtcms.com/a/394411.html

相关文章:

  • MySQL:库操作和常用数据类型
  • uniapp实现view块级元素横竖屏切换
  • 【编号74】河北地理基础数据(道路、水系、四级行政边界、地级城市、DEM等)
  • Python: 将wxauto发布为接口,并部署为Windows服务
  • 2025年度SEO优化公司
  • 基于Markdown的静态网站生成器完全指南
  • hot100——第十一周
  • 嵌入式(2)——HAL_GetTick()
  • 《第18课——C语言结构体:从Java的“豪华别墅“到C的“集装箱宿舍“——内存对齐、位域抠门与指针破门的底层狂欢》
  • 旅游线路预约小程序怎么搭建?景区售票团购小程序怎么做?
  • Redis未来发展趋势:技术演进与生态展望
  • 怎么重新映射windows终端的按键的功能
  • 【秋招笔试】2025.09.20哔哩哔哩秋招笔试真题
  • string 容器
  • MySQL零基础学习Day1——安装与配置
  • mysql重启,服务器计划重启,如何优雅地停止MySQL?
  • 源码加密知识产权(二) JS压缩和加密——东方仙盟元婴期
  • ​​[硬件电路-308]:双通道通用比较器TC75W57FK 功能概述与管脚定义
  • 华为MindIE 推理引擎:架构解析
  • 使用 modelscope gpu 跑通第一个 cuda 入门实例
  • Agent实战02-agent入门案例LlamaIndex
  • 微服务基础1-微服务拆分与服务调用
  • http、UDP协议
  • 微服务基础3-服务保护与分布式事务
  • C++红黑树详解
  • 【不背八股】15.kmp算法/ Dijkstra算法/二叉树遍历
  • 【ES】ElasticSearch 数据库之查询操作 从入门>实践>精通 一篇文章包含ES的所有查询语法
  • huggingface-cli修改模型下载路径
  • 计算机视觉——灰度分布
  • OpenFeature 标准在 ABP vNext 的落地