Get Started Reading a TDMS-File
This example shows how to read data from a TDMS-file into MATLAB® for analysis.
The example TDMS-file contains measurement data of a sine wave amplitude and phase. The measurements are in two channels, in the same channel group.
Inspect the TDMS-File Contents
Use the tdmsinfo
function to obtain channel group and channel names in the TDMS-file.
fileName = "SineWave.tdms";
info = tdmsinfo(fileName);
info.ChannelList
ans=2×8 table
ChannelGroupNumber ChannelGroupName ChannelGroupDescription ChannelName ChannelDescription Unit DataType NumSamples
__________________ ________________ _______________________ _________________ __________________ ____ ________ __________
1 "Measured Data" "" "Amplitude sweep" "" "" "Double" 3500
1 "Measured Data" "" "Phase sweep" "" "" "Double" 3500
Read Data Properties from the TDMS-File
Use the tdmsreadprop
function to view data properties from the file.
tdmsreadprop(fileName)
ans=1×7 table
name description datetime author title datestring timestring
__________ ___________ _____________________________ _______ ___________________________ ____________ __________
"SineWave" "" 2022-01-12 23:33:31.000000000 "Admin" "Amplitude And Phase Sweep" "01/13/2022" "10:03:31"
Specify a ChannelGroupName
and ChannelName
arguments to view properties of a specific channel.
group = "Measured Data"; channel = "Amplitude sweep"; tdmsreadprop(fileName, ChannelGroupName=group, ChannelName=channel)
ans=1×19 table
name description unit_string datatype displaytype monotony NI_ChannelName NI_ExpIsRelativeTime NI_ExpStartTimeStamp NI_ExpTimeStamp NI_ExpXDimension novaluekey wf_increment wf_samples wf_start_offset wf_start_time wf_time_pref wf_xname wf_xunit_string
_________________ ___________ ___________ ___________ ___________ ________________ ______________ ____________________ _____________________________ _____________________________ ________________ ________________ ____________ __________ _______________ _____________________________ ____________ ________ _______________
"Amplitude sweep" "" "" "DT_DOUBLE" "Numeric" "not calculated" "Sine" 1 2022-01-12 22:08:35.674852848 2022-01-12 22:08:35.674852848 "t" "not calculated" 0.001 3500 0 1903-12-31 19:00:00.000000000 "relative" "Time" "s"
Read Timetable Data from the TDMS-File into MATLAB
To read data into a timetable, derive the start time and time step, typically contained in the channel properties.
timeStep = tdmsreadprop(fileName, ChannelGroupName=group, ChannelName=channel, PropertyNames="wf_increment")
timeStep=table
wf_increment
____________
0.001
startTime = tdmsreadprop(fileName, ChannelGroupName=group, ChannelName=channel, PropertyNames="wf_start_time")
startTime=table
wf_start_time
_____________________________
1903-12-31 19:00:00.000000000
Using the start time and time step as arguments to the tdmsread
function, read the data into MATLAB as a cell array of timetables. View some of the data from first channel group.
data = tdmsread(fileName, StartTime=startTime.wf_start_time, TimeStep=seconds(timeStep.wf_increment)); ttData = data{1}; head(ttData)
ans=8×2 timetable
Time Amplitude sweep Phase sweep
_____________________________ _______________ ___________
1903-12-31 19:00:00.000000000 0 0
1903-12-31 19:00:00.001000000 0 0.063418
1903-12-31 19:00:00.002000000 0 0.12658
1903-12-31 19:00:00.003000000 0 0.18923
1903-12-31 19:00:00.004000000 0 0.25112
1903-12-31 19:00:00.005000000 0 0.312
1903-12-31 19:00:00.006000000 0 0.37163
1903-12-31 19:00:00.007000000 0 0.42975
Use a stacked plot to visualize the relationship between the data of different channels.
stackedplot(ttData);