问题描述:Labview采集数据时保存的数据格式一般是tdms文件,matlab无法直接读取tdms文件,需要安装TDMS Reader插件。
1.下载tdms插件
通过网盘分享的文件:v2p6.zip
链接: https://pan.baidu.com/s/16W4SGegGiA6CuLNqv5TUXQ?pwd=m8ma 提取码: m8ma
2.将下载的插件放到安装的matlab中的toolbox文件夹下
首先将v2p6.zip进行解压到桌面,然后将v2p6文件夹复制至matlab中的toolbox文件夹下。

3.添加路径
打开matlab软件--》主页--》设置路径--》添加并包含子文件夹--》选择matlab中的toolbox文件夹下的v2p6文件。


4.更新路径
主页--》预设--》常规--》更新工具箱路径缓存。

5.读取数据并绘图
以读取1_0kg_2500r.tdms文件为例,
数据链接:https://download.csdn.net/download/bynacqt/90546877
代码如下:
Matlab
clear all
% 文件路径
filePath = 'C:\Users\lenovo\Desktop\1_0kg_2500r.tdms';
% 读取TDMS文件
dataStruct = TDMS_getStruct(filePath);
% 定义组名称和通道名称
groups = {'g_1600Hz_vib', 'g_3200Hz_vib', 'g_6400Hz_vib', 'g_12800Hz_vib', 'g_25600Hz_vib'};
channels = {'single_axis', 'x_axis', 'y_axis', 'z_axis'};
% 初始化存储数据的结构体
resultStruct = struct();
% 遍历每个组和每个通道,读取数据
for i = 1:length(groups)
groupName = groups{i};
for j = 1:length(channels)
channelName = channels{j};
% 读取指定组和通道的数据
resultStruct.(groupName).(channelName) = dataStruct.(groupName).(channelName).data;
end
end
% 显示读取的数据
disp(resultStruct);
plot(resultStruct.g_1600Hz_vib.single_axis)
绘制的信号图片如下:

6.数据采集与分析系统
本人设计了振动信号、声音信号、电压信号、电流信号、温度信号等数据采集与分析系统,感兴趣的可以看一下:

7.其它报错
注意报错:无法直接读取labview保存的tdms文件
为例节省存储,labview会将数据压缩后存储为tdms文件。此时即使安装了tdms插件,matlab程序读取tdms文件时仍会报错。
错误使用 TDMS_processLeadIn (line 50)
Currently code is unable to ignore/handle Raw Daq MX data出错 TDMS_preprocessFile (line 182)
flags,info,eof_error\] = TDMS_processLeadIn(fid,lastLetter); 出错 TDMS_readTDMSFile (line 230) metaStruct = TDMS_preprocessFile(fid,tdmsFileName,paramsStruct); 出错 TDMS_getStruct (line 83) \[temp,metaStruct\] = TDMS_readTDMSFile(filePath,readOptions{:});

解决方法:
使用python读取tdms文件,然后另存为tdms文件就可以了(如果有条件,还是建议用python来分析tdms数据,十分方便)。