MATLAB——读取MDF/MF4文件和BLF文件
一、读取MDF/MF4文件
1.1 从 *.mdf 文件中读取所有数据
mdfObj = mdf('CANape.mdf'); % 打开*.mdf/*.mf4文件
data1 = read(mdfObj); % 读取所有可用的数据mdfds = mdfDatastore({'CANape1.MF4','CANape2.MF4','CANape3.MF4'}); % 打开一个文件夹下的多个文件
data2 = readall(mdfds); % 读取数据存储中的所有数据
1.2 从指定的通道列表读取所有数据
通过channelList( )函数读取数据的信号名、信号所在的组号、信号组样本量等信息。
mdfObj = mdf('CANape.mdf'); % 打开*.mdf/*.mf4文件
chanList = channelList(mdfObj); % 通道列表
data0 = read(mdfObj,chanList(1:3,:)); % 读取通道列表中的前3个信号
data1 = read(mdfObj,1,'Counter_B4'); % 根据组号和信号名读取指定信号数据
data2 = read(mdfObj,1,{'Channel1','Channel2'}); % 读取多个信号数据
1.3 基于指定的索引值读取一定范围内的数据
mdfObj = mdf('CANape.mdf'); % 打开*.mdf/*.mf4文件
data1 = read(mdfObj,1,mdfObj.ChannelNames{1},1,10); % 按索引读取数据子集
data2 = read(mdfObj,1,mdfObj.ChannelNames{1},5); % 按索引读取特定数据值
data3 = read(mdfObj,1,{'Channel1','Channel2'},1,10); % 按索引读取特定信号
1.4 基于指定的时间值读取一定范围内的数据
mdfObj = mdf('CANape.mdf'); % 打开*.mdf/*.mf4文件
data1 = read(mdfObj,1,mdfObj.ChannelNames{1},seconds(0.50),seconds(0.60)); % 按时间读取数据子集
data2 = read(mdfObj,1,mdfObj.ChannelNames{1},seconds(0.55)); % 按时间读取特定数据值
data3 = read(mdfObj,1,{'Channel1','Channel2'},seconds(5.5),seconds(7.3)); % 读取特定信号数据
1.5 其他读取方式
mdfObj = mdf('CANape.mdf');
data1 = read(mdfObj,1,'Channel1',1,10,'OutputFormat','timetable'); % 输出格式默认为时间表
data2 = read(mdfObj,1,'Channel1',1,10,'OutputFormat','timeseries'); % 输出时序数据
[data3,time3] = read(mdfObj,1,'Channel1',1,10,'OutputFormat','vector'); % 输出向量数据
1.6 信号可视化(2019版本及以上)
mdfVisualize('CANape.mdf');
1.7 查看文件信息
mdfObj = mdf('CANape.mdf'); % 打开*.mdf/*.mf4文件
mdfObj.Creator % 查看文件创建详细信息mdfObj.ChannelGroup(1) % 查看通道组详细信息
mdfObj.ChannelGroup(2) % MDF文件中的数据存储在通道组中包含的通道中。mdfObj.ChannelGroup(1).Channel(1) % 查看通道详细信息,通道组内存储了每个通道的详细信息。mdfObj.ChannelNames % 快速访问通道名称
mdfObj.ChannelNames{1} % 通过 ChannelNames 属性,可以快速访问以查找各个通道组中的特定通道。
1.8 MATLAB自带Demo
脚本文件:ReadingDataFromMDFFilesExample.m
数据文件:CANape.MF4
%% Reading Data from MDF Files
% This example shows you how to read channel data from an MDF file.%% 打开 MDF 文件
% 在从 MDF 文件读取通道数据之前,使用 mdf 命令开启对该文件的访问权限。
m = mdf('CANape.MF4')%% 指定要读取的数据
% read 命令用于从 MDF
% 文件中检索数据,它有几种不同的使用方式。它需要两个主要参数。一个是要从中读取数据的通道组的数值索引。另一个是要读取的通道组中通道的名称。有关这些项的信息可从
% MDF 文件中获得。
m.ChannelGroup(1)
m.ChannelNames{1}%% 按索引读取数据子集
% 要按索引只读取数据的一个子集,请将索引范围作为 read 命令的输入。
data = read(m, 1, m.ChannelNames{1}, 1, 10)%% 按索引读取特定数据值
% 提供单个数值索引参数将检索在该索引处的数据值。
data = read(m, 1, m.ChannelNames{1}, 5)%% 按时间读取数据子集
% 要按时间读取数据的一个子集,请将持续时间参数作为 read 命令的输入。
data = read(m, 1, m.ChannelNames{1}, seconds(0.50), seconds(0.60))%% 按时间读取特定数据值
% 提供单个持续时间将检索在该时间戳处或最接近于该时间戳处的数据值。
data = read(m, 1, m.ChannelNames{1}, seconds(0.55))%% 输出格式默认为时间表
% read 命令的默认输出格式是时间表。可以使用 OutputFormat 参数来控制此选项。
data = read(m, 1, 'Triangle', 1, 10, 'OutputFormat', 'timetable')%% 输出时序数据
% 如果需要使用时序作为输出,则可以为 read 命令指定 OutputFormat。当将数据作为时序输出时,一次只能读取一个通道。
data = read(m, 1, 'Triangle', 1, 10, 'OutputFormat', 'timeseries')%% 输出向量数据
% read 命令的输出也可以指定为向量。将数据作为向量输出时,一次只能读取一个通道。
[data, time] = read(m, 1, 'Triangle', 1, 10, 'OutputFormat', 'vector')%% 读取整个通道组
% 要在单个调用中快速读取整个通道组中的数据,不需要为 read 命令指定其他参数。
data = read(m, 1, m.ChannelNames{1});%%
% Copyright 2012 The MathWorks, Inc.
二、读取BLF文件
2.1 常用函数
- canDatabase( ):创建一个DBC文件对象,用于解析BLF文件数据
- blfinfo( ):获取BLF文件信息
- blfread( ):读取BLF文件数据
- canSignalTimetable( ):将读出来的BLF文件数据转换成timetable格式
2.2 举个栗子
CanDB = canDatabase('PowerTrain_BLF.dbc'); % 创建DBC文件,用于解析报文的数据结构,文件是MATLAB自带的binf = blfinfo('Logging_BLF.blf'); % 获取BLF文件,确定数据在哪路CAN通道上binf.ChannelList % 查看通道列表BLFData = blfread('Logging_BLF.blf',2,'Database',CanDB); % 读取指定CAN通道中的报文数据,2代表通道序号,'Database'是定义好的DBC数据对象,如果选错了通道,那么无法解析报文名和信号名signalTimetable1 = canSignalTimetable(blfdata,'ABSdata'); % 获取指定报文的timetable格式的数据
参考:
【1】MATLAB官方帮助文档。
MATLAB——读取MDF/MF4文件和BLF文件相关推荐
- MATLAB读取txt,excel,ASCII文件
MATLAB读取txt,excel,ASCII文件 1. 读取方式 textread(字母和数值每行格式一致) xlsread(读取excel文件) importdata(字母和数值分开,以数字为主, ...
- matlab读取xls、xlsx、csv文件
常常我们在matlab里需要读取excel数据文件或者保存matlab中矩阵的数据.但是直接在matlab里用xlswrite写出的文件实际上是csv格式,在matlab里无法用xlsread读取.笔 ...
- matlab读取二进制文件字符串,matlab读取内容为二进制的TXT文件
本方法同样适合读取十六进制和二进制以外的其他进制文件, txt使用一个最简单的命令就可以读取 textread 这是一个十分有用,简便的函数(对于fopen fscanf而言) 读取二进制txt文件: ...
- matlab 读取mdf文件路径,访问 MDF 文件
- MATLAB Simulink Example
- MathWorks 中国
打开 MDF 文件 通过指定目标文件的名称来打开 MDF 文件.有关该文件的许多基本详细信息已提供.此示例文件是使用 Vector CANape 创建的. m = mdf("CANapeBa ...
- MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像
0.matlab 移动(复制)文件到另一个文件夹 sourcePath = '.\Square_train'; targetPath = '.\Square_test'; fileList = dir ...
- matlab ros 手势识别,使用MATLAB读取分析ros记录的.bag文件
/一定要关闭所有的防火墙 设置主机IP setenv('ROS_MASTER_URI','http://192.168.43.241;11311') 设置本机节点ip setenv('ROS_IP', ...
- Python解析CANoe录制的blf文件asc文件通用方法
Python解析CANoe录制的blf文件&asc文件通用方法 一.背景 由于很多时候我们在录制日志文件的时候更愿意选择BLF文件,至少目前我见到的很多公司都是使用的BLF文件来作为最 ...
- 【三维重建】之 matlab读取 .wrl 三维图像文件
matlab读取 .wrl 三维图像文件 1. wrl 文件 wrl(虚拟现实语言): wrl文件是一种虚拟现实文本格式文件.也是VRML的场景模型文件的扩展名. wrl文件是纯ASCII文件,所以可 ...
- Matlab读取Eprime数据(txt文档)
Eprime程序跑完后生成的数据是edat格式,matlab不能直接读取,如果手动merge和export我觉得不太方便,尤其当数据是陆续收集而不是一下子就收好的时候.而且如果两个edat文件的被试或 ...
最新文章
- 19.VS属性管理器窗口不见了怎么办?
- 超详细的java生成excel文件并下载
- Boost:boost :: bind相等运算符的测试程序
- 在Visual Studio中使用用例图描述系统与参与者间的关系
- w3 protocol
- leetcode695. 岛屿的最大面积(dfs)
- vs怎么调试php程序,vscode如何调试运行c#程序
- FireFox中国管理者的脑袋被驴踢了。
- 点赞功能java_jquery点赞功能实现代码 点个赞吧!
- python引用列表中的变量_我可以获得在Python 2.7中引用其他变量的变量列表吗?...
- 【使用TL431校准万用表】
- 怎么将word2016的背景色改成护眼绿?
- 云服务器快速建网站_安装BT宝塔面板和wordpress
- css word-wrap
- 阿里云应用实时监控服务ARMS接入
- 家谱文化研究①:乾隆干预民间修谱有哪些正面影响和负面影响?
- 一文详解蓝牙模块分类
- 秒表计时器怎么读_物理的秒表的读法怎么读???不是翻译!!
- 智力数学题:猴子分桃
- 最中二的性能测试工具--vegeta
热门文章
- python语言编写的modbus协议_基于Python的ModbusTCP客户端实现
- 线性方程组数学原理、矩阵原理及矩阵变换本质、机器学习模型参数求解相关原理讨论...
- 简单脱壳教程笔记(3)---手脱UPX壳(2)
- GEE开发之Modis_ET数据分析和获取
- 在XP中用U盘做内存(ReadyBoost)
- UAP开发(NC63)遇到的错误记录
- 【180928】魔兽连连看游戏源代码
- 匿名软件竟成网络侵权避风港
- Ubuntu 15.04 安装 Nvidia Quadro系列显卡驱动
- Android FTM Porting笔记