向Matlab中添加“野生”数据并简单分析(1)
来源:互联网 发布:多功能qq视频录像软件 编辑:程序博客网 时间:2024/05/16 09:28
功能:向Matlab中导入txt格式的数据,并对这些数据做简单分析
场景:在现场调试485串口总线,拿回来的数据是一大串十六进制原始数据。现场时间紧,准备工作也没做充分,所以没有分行的一整段原始数据,直接从串口调试助手里面复制到txt中。因此,要分析调试的结果,就要处理这些原始数据。
操作步骤:其实也不复杂。
原始数据形如“6 F7 34 01 03 04 1B 1E 26 C5 46 E2 01 03 04 1B 24 26 B7 E6 CA 01 03 04 1B ”。
1)根据485的通信协议,其数据帧由地址码、功能码、寄存器高位、寄存器低位、寄存器高位数据、寄存器低位数据、两位CRC效验组成。接收到的原始数据,其开头一段是相同的“01 03 04”,代表了这一帧数据的含义。
将指代同一数据的原始数据文本拷贝到word中,利用word的文本替换功能将“01 03 04”替换为换行符“^p”。
2)word中分行后的数据为“1B 1E 26 C5 46 E2”,后两位为校验位,需要校验的可以拿着校验下,只用数据的话提取前四位就行。有两种操作方法:
2.1)将word中数据复制保存到txt中,利用matlab读取其中字符,并转化为数字。读取时选择性地读取前四位。
2.2)将word中数据的空格“ ”替换为Tab制表符“ ”,然后选中全部文本粘贴到xls中,在xls中删除后两列。
3)现在txt中待读取数据为分行存储的6位或4位寄存器数据,在位与位之间有空格或者制表符隔开。
在Matlab中采用fopen与textscan函数读取数据:
fid = fopen('somedata.txt');
datacell=textscan(fid,'%s')';%以字符形式读取内容
此时,读取到的内容保存名为datacell的<1x1 cell>中,假设一共有n行的6位数据,所有字符一个接一个的从txt中被读取后放置到datacell{1,1}中,形成了6n行1列的<6nx1 cell>。
4)将datacell{1,1}中字符转化为数据。
首先计算出数据的行数n,称为datanum:
datasize=size(datacell{1,1},1);
datanum=datasize/6;
为转换后数据分配地址:
dataoriginal=datacell{1,1};
data=cell(datanum,2);
有选择的读取每一行的前四位,并用hex2dec函数将16进制转换为10进制:
for i=0:datanum-1
data{i+1,1}=(hex2dec(dataoriginal{i*6+1,1})*256+hex2dec(dataoriginal{i*6+2,1})-10000)/100;
data{i+1,2}=(hex2dec(dataoriginal{i*6+3,1})*256+hex2dec(dataoriginal{i*6+4,1})-10000)/100;
end
将数据从data{i,1}取出保存到数组datam(i,1)后,将datam数组保存为.mat文件,方便后续处理文件调用。
save('datam.mat','datam');
5)调用datam采用load函数:
load('datam.mat','datam');
这样就实现了从无序txt文本到有序Matlab数组的过程。
假设txt文本中保持的就是要用到的十进制数据,形如“-18.1759 -4.33186 151.595”,那么textscan指定为数据格式‘%f’读取即可。
datacell=textscan(fid,'%f')';
阅读全文
1 0
- 向Matlab中添加“野生”数据并简单分析(1)
- 向Matlab中添加“野生”数据并简单分析(2)
- 向数据库中添加数据
- 添加数据向表中添加默认值
- C#创建Access数据库、表格、并向表格中添加数据
- c#中向ListView中添加一行数据的一种简单方法
- C#中向dataTable中添加数据
- C#中向Chart中添加数据
- 向 Java 代码中添加元数据1
- mysql操作(创建表,向表中添加数据)
- SQL基础:向表中添加数据
- 如何向SQL中添加数据
- javascript向excel中添加数据
- VC 向SQL中添加数据
- Winform中向DataGridView控件添加数据
- 动态的向ListView中添加数据
- 使用Hibernate向数据库中添加数据
- 利用JS向页面中添加数据
- java excel导入和导出(poi,jxl)
- js把变量设置成缓存并给下一个页面的input赋值
- 1-2、数字图像处理基础
- jvm之对象的内存布局
- android studio编辑gradle文件卡顿问题解决
- 向Matlab中添加“野生”数据并简单分析(1)
- SER2016 DIV1 问题 H: Paint(区间问题贪心+dp优化)
- JAVA
- Js中严格模式和非严格模式的区别
- 【081】使用Nginx的官方Docker镜像,启动容器后无法显示自己网站页面,总显示Nginx官方默认页面的问题的解决方法
- Redis实现单点登录
- css3 颜色渐变
- Laravel Artisan 控制台
- 关于sqlserver字符类型查询条件区分大小写