【matlab进阶学习-6】 读取log数据data.txt文件,并做处理,导出报告/表格/图表

原始文件

原始文件格式txt,每一行对应一个数据,数据之间由逗号分割开

对应意思

时刻,电压,电流,功率,容量,,电流,功率,,RTC时间,状态1,状态2,状态3,电量,电压,电流,故障码,工作状态,电机电流1,电机电流2,电机电流3

需求

💡

1,打开data 表格

2,删除第一列中的时间重复项,建立新表格,并保存输出

3,取出所有表格中的时间,电压,电流,容量,状态,led灯 建立新的表格,并生成图表

4,计算状态为1时候的带刀盘工作时间 worktime,

计算状态为2时的回归时间 backtime,

5,计算工作时,行走(0mA>cur >-500mA) 平均电流,最小电流,电流众数,电流中位数 walk_cur_avr min mode midian

计算工作时,切割(cur <-500mA ) 平均电流,最小电流,电流众数,电流中位数 walk_cur_avr min mode midian

6,将电量对应的最大最小电压显示出来

7,将4,5导出data.txt 报告

1,打开data 表格

clear;clc;
data_m = readtable('data.txt',"Delimiter",',');
%Delimiter 分隔符
%, 以逗号风格

2,删除第一列中的时间重复项,建立新表格,并保存输出

filename = 'data_report.xlsx';  
writetable(data_m, filename, 'Sheet', 'data_init');
%将data_m 数据写入文件名未data_report.xlsx的表格的data_init中
[data_d,n] = unique(data_m(:,1));%删除第一列中的重复项,其他列对应删除 %data_d,n,唯一列的索引
data_only=data_m(n,:);
%filename = 'data_only.xlsx';  
writetable(data_only, filename, 'Sheet', 'data_only');

3,取出所有表格中的时间,电压,电流,容量,状态,led灯 建立新的表格,并生成图表

data_time = table2array(data_only(:,1)); 
data_vol = table2array(data_only(:,2));
data_cur = table2array(data_only(:,3));
data_state = table2array(data_only(:,12));
data_led = table2array(data_only(:,14));
%读取时间,电压,电流,状态,led,并改为矩阵格式data_led_num =[]; for i =1:length(data_led)a=cell2mat(data_led(i));  %提取每一行的数据,并将cell型转成mat型b=str2double(a(4));  %提取字符串的第四个数data_led_num=[data_led_num;b]; %保存成新的表格end
plot(data_time,data_vol,data_time,data_cur,data_time,data_state.*10000,data_time,data_led_num*10000)
xlabel('time')
saveas(gcf,'picture.png'); % 将图形导出为PNG格式%生成图表
%添加x轴
%保存图片格式

4,计算状态为1时候的带刀盘工作时间 worktime,计算状态为2时的回归时间 backtime,

worktime =floor( sum(data_state==1)/60)
backtime =floor(  sum(data_state==2)/60)
%状态1的逻辑数求和,除以60 秒转成分钟,floor 取整

5,计算工作时,行走(0mA>cur >-500mA) 平均电流,最小电流,电流众数,电流中位数 walk_cur_avr min mode midian

计算工作时,切割(cur <-500mA ) 平均电流,最小电流,电流众数,电流中位数 walk_cur_avr min mode midian

format long g
walk_index  = find(data_cur>-500 & data_cur<0);  %找出-500mA-0mA 的索引
blake_index = find(data_cur<-500 );%找出<-500mA 的索引
data_cur_walk = data_cur(walk_index); %提取行走电流
data_cur_blake = data_cur(blake_index);%提取切割电流disp("行走电流数据")
data_cur_walk_min = min(data_cur_walk)%最小值
data_cur_walk_avr = floor(mean(data_cur_walk)) %平均值
data_cur_walk_mode = mode(data_cur_walk)%众数
data_cur_walk_median = median(data_cur_walk)%中位数disp("切割电流数据")
data_cur_blake_min = min(data_cur_blake)
data_cur_blake_avr =floor( mean(data_cur_blake))
data_cur_blake_mode = mode(data_cur_blake)
data_cur_blake_median = median(data_cur_blake)

6,将电量对应的最大最小电压显示出来

disp_led_6_index = find(data_led_num==6);
disp_led_5_index = find(data_led_num==5);
disp_led_4_index = find(data_led_num==4);
disp_led_3_index = find(data_led_num==3);
disp_led_2_index = find(data_led_num==2);
disp_led_1_index = find(data_led_num==1);
%提取 各指示灯的电量索引
disp_vol_6_arr = data_vol(disp_led_6_index);
disp_vol_5_arr = data_vol(disp_led_5_index);
disp_vol_4_arr = data_vol(disp_led_4_index);
disp_vol_3_arr = data_vol(disp_led_3_index);
disp_vol_2_arr = data_vol(disp_led_2_index);
disp_vol_1_arr = data_vol(disp_led_1_index);
%提取各指示灯的电压disp_vol_6_arr_max = max(disp_vol_6_arr);
disp_vol_6_arr_min = min(disp_vol_6_arr);
%计算最大最小值disp_vol_5_arr_max = max(disp_vol_5_arr);
disp_vol_5_arr_min = min(disp_vol_5_arr);disp_vol_4_arr_max= max(disp_vol_4_arr);
disp_vol_4_arr_min = min(disp_vol_4_arr);disp_vol_3_arr_max = max(disp_vol_3_arr);
disp_vol_3_arr_min = min(disp_vol_3_arr);disp_vol_2_arr_max = max(disp_vol_2_arr);
disp_vol_2_arr_min = min(disp_vol_2_arr);disp_vol_1_arr_max = max(disp_vol_1_arr);
disp_vol_1_arr_min = min(disp_vol_1_arr);disp_vol_6_worktime = floor(sum(data_led_num==6)/60)
disp_vol_5_worktime = floor(sum(data_led_num==5)/60)
disp_vol_4_worktime = floor(sum(data_led_num==4)/60)
disp_vol_3_worktime = floor(sum(data_led_num==3)/60)
disp_vol_2_worktime = floor(sum(data_led_num==2)/60)
disp_vol_1_worktime = floor(sum(data_led_num==1)/60)
%计算工作时间

7,将4,5导出data.txt 报告

fileID = fopen('report.txt','w');  
fprintf(fileID,'%s\n', '----report----'); 
fprintf(fileID,'%s\n', '工作时长'); 
fprintf(fileID,'带刀盘切割工作时长:%d 分钟\n', worktime); 
fprintf(fileID,'触发回归后工作时长:%d 分钟\n', backtime); fprintf(fileID,'%s\n', ' '); 
fprintf(fileID,'%s\n', '行走电流'); fprintf(fileID,'行走最小电流:%d mA\n', data_cur_walk_min); 
fprintf(fileID,'行走平均电流:%d mA\n', data_cur_walk_avr); 
fprintf(fileID,'行走众数电流:%d mA\n', data_cur_walk_mode); 
fprintf(fileID,'行走中位数电流:%d mA\n', data_cur_walk_median); fprintf(fileID,'%s\n', ' '); 
fprintf(fileID,'%s\n', '切割电流'); 
fprintf(fileID,'切割最小电流:%d mA\n', data_cur_blake_min); 
fprintf(fileID,'切割平均电流:%d mA\n', data_cur_blake_avr); 
fprintf(fileID,'切割众数电流:%d mA\n', data_cur_blake_mode); 
fprintf(fileID,'切割中位数电流:%d mA\n', data_cur_blake_median); fprintf(fileID,'%s\n', ' '); 
fprintf(fileID,'%s\n', 'LED灯对应电压及工作时长'); 
fprintf(fileID,'LED=6 :(%d mV~%d mV),%d 分钟\n', disp_vol_6_arr_max,disp_vol_6_arr_min,disp_vol_6_worktime); 
fprintf(fileID,'LED=5 :(%d mV~%d mV),%d 分钟\n', disp_vol_5_arr_max,disp_vol_5_arr_min,disp_vol_5_worktime); 
fprintf(fileID,'LED=4 :(%d mV~%d mV),%d 分钟\n', disp_vol_4_arr_max,disp_vol_4_arr_min,disp_vol_4_worktime); 
fprintf(fileID,'LED=3 :(%d mV~%d mV),%d 分钟\n', disp_vol_3_arr_max,disp_vol_3_arr_min,disp_vol_3_worktime); 
fprintf(fileID,'LED=2 :(%d mV~%d mV),%d 分钟\n', disp_vol_2_arr_max,disp_vol_2_arr_min,disp_vol_2_worktime); 
fprintf(fileID,'LED=1 :(%d mV~%d mV),%d 分钟\n', disp_vol_1_arr_max,disp_vol_1_arr_min,disp_vol_1_worktime); fclose(fileID);

生成的目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网服务器部署maven私服简记

前言 很多企业希望创建自己的maven私服&#xff0c;但服务器无法和外网连通&#xff0c;所以这里介绍一套完整的内网部署nexus的解决方案。实现的方式也很简单&#xff0c;将下载好的nexus安装和项目所需的依赖仓库都上传到服务i去上去&#xff0c;通过脚本的方式实现批量导入…

CSS的三大特性(层叠性、继承性、优先级---------很重要)

CSS 有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级。 层叠性 场景&#xff1a;相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要解决样式冲突 的问题 原则&#xff1a;  样式冲突&am…

autojs-练手-视频号点赞(进阶版)

注释很详细&#xff0c;直接上代码 较初阶版新增内容 1. 简单但好用的ui界面 为方便大家参考&#xff0c;ui界面的模板单独拿出来了 ui界面模板 2. opencv图像识别 3. 需加载情况特殊处理&#xff08;防卡壳&#xff09; 4. 增加自动判断是否已点赞的情况 源码部分 // 启用…

HarmonyOS4.0从零开始的开发教程14Web组件的使用

HarmonyOS&#xff08;十二&#xff09;Web组件的使用 1 概述 相信大家都遇到过这样的场景&#xff0c;有时候我们点击应用的页面&#xff0c;会跳转到一个类似浏览器加载的页面&#xff0c;加载完成后&#xff0c;才显示这个页面的具体内容&#xff0c;这个加载和显示网页的…

智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水循环算法4.实验参数设定5.算法结果6.参考文…

无需公网IP联机Minecraft,我的世界服务器本地搭建教程

目录 前言 1.Mcsmanager安装 2.创建Minecraft服务器 3.本地测试联机 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射内网端口 5.远程联机测试 6. 配置固定远程联机端口地址 6.1 保留一个固定TCP地址 6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 8.总…

Vue 中 v-model 的修饰符

lazy 修饰符&#xff1a;将 v-model 改为失去焦点后更新数据。 number 修饰符&#xff1a;将 v-model 数据转为数字类型。 trim 修饰符&#xff1a;去除 v-model 数据中的首尾空格。 语法格式&#xff1a; // lazy 修饰符 <input v-model.lazy"数据"> // nu…

靠谱的车- 华为OD统一考试(C卷)

靠谱的车- 华为OD统一考试&#xff08;C卷&#xff09; OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 程序员小明打了一辆出租车去上班。出于职业敏感&#xff0c;他注意到这辆出租车的计费表有点问题&#xf…

【JNA与C++基本使用示例】

JNA中java与C使用注意事项和代码示例 JNA关系映射表使用案列注意代码示例C代码java代码 JNA关系映射表 使用案列 注意 JNA只支持C方式的dll使用C的char* 作为返回值时&#xff0c;需要返回的变量为malloc分配的地址C的strlen函数只获得除/0以外的字符串长度 代码示例 C代码…

基于PaddleNLP的深度学习对文本自动添加标点符号(一)

前言 目前以深度学习对文本自动添加标点符号研究很少&#xff0c;已知的开源项目并不多&#xff0c;详细的介绍就更少了&#xff0c;但对文本自动添加标点符号又在古文识别语音识别上有重大应用。 基于此&#xff0c;本文开始讲解基于PaddleNLP的深度学习对文本自动添加标点符号…

鸿蒙开发之状态管理@Prop和@Link

一、用法 在父子组件需要进行数据同步的时候&#xff0c;可以通过Prop和Link装饰器来做到。在父组件中用State装饰&#xff0c;在自组件中用Prop或Link装饰。 结论&#xff1a;Prop用于子组件只监听父组件的数据改变而改变&#xff0c;自己不对数据改变 Link用于子组件与父组…

Proxmox VE 安装 OpenWrt 配置旁路由教程

话不多说&#xff0c;本篇文章将记录如何在 Proxmox VE 环境通过虚拟机安装 OpenWrt 配置旁路由的过程&#xff0c;仅做参考。 PVE 创建虚拟机 名称随意&#xff0c;GuestOS 选择 Linux&#xff0c;不使用任何 iso 镜像。&#xff08;记住你的 VMID&#xff09; 清空将要创建…

机器学习---Adaboost算法

1. Adaboost算法介绍 Adaboost是一种迭代算法&#xff0c;其核心思想是针对同一个训练集训练不同的分类器&#xff08;弱分类器&#xff09;&#xff0c;然 后把这些弱分类器集合起来&#xff0c;构成一个更强的最终分类器&#xff08;强分类器&#xff09;。Adaboost算法本身…

Qt 线程

&#x1f4a1; 进度条显示拷贝进度&#xff08;verson 1&#xff09; 窗口上放置一个按钮和一个进度条部件&#xff0c;点击按钮&#xff0c;进行拷贝操作 —— 打开对话框选择源文件&#xff0c;然后再打开一个对话框 选择 目标文件存放位置和名称。拷贝过程中进度条显示当前…

十三、YARN资源分配调用

1、为什么要先学习YARN组件&#xff1f; 在Hadoop文件系统中&#xff0c;YARN作为Hadoop系统的第三大组件&#xff0c;其中&#xff0c;第二大组件MapReduce组件是基于YARN运行的&#xff0c;即没有YARN无法运行MapReduce程序&#xff0c;所以需要同时学习YARN。 2、YARN &…

Day58力扣打卡

打卡记录 下一个更大元素 IV&#xff08;单调栈 x2&#xff09; 链接 class Solution:def secondGreaterElement(self, nums: List[int]) -> List[int]:ans [-1] * len(nums)s []t []for i, x in enumerate(nums):while t and nums[t[-1]] < x:ans[t.pop()] x # t…

『npm』一条命令快速配置npm淘宝国内镜像

&#x1f4e3;读完这篇文章里你能收获到 一条命令快速切换至淘宝镜像恢复官方镜像 文章目录 一、设置淘宝镜像源二、恢复官方镜像源三、查看当前使用的镜像 一、设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org服务器建议全局设置 sudo npm config…

科技提升安全,基于YOLOv6开发构建商超扶梯场景下行人安全行为姿态检测识别系统

在商超等人流量较为密集的场景下经常会报道出现一些行人在扶梯上摔倒、受伤等问题&#xff0c;随着AI技术的快速发展与不断普及&#xff0c;越来越多的商超、地铁等场景开始加装专用的安全检测预警系统&#xff0c;核心工作原理即使AI模型与摄像头图像视频流的实时计算&#xf…

没有明确的报错信息,阿里云国际版Windows服务器无法远程连接

在远程连接失败时&#xff0c;如果您没有收到系统返回的报错信息&#xff0c;并且ECS实例是运行中的状态&#xff0c;然后再根据以下步骤进行排查&#xff1a; 步骤一&#xff1a;使用阿里云Workbench工具测试远程登录 步骤二&#xff1a;检查是否有收到黑洞通知 步骤三&…

多维时序 | MATLAB实现BWO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现BWO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现BWO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现BWO-CNN-B…