Write Timetable Data to TDMS-file
This example shows how to write timetable data in various time channel layouts from MATLAB® to a TDMS-file.
For this example, you have measurents of revolution and electrical current of a circular saw in a scenario where it stops on detecting contact with skin.
Load the data to workspace.
load("sawstopper.mat")
whos
Name Size Bytes Class Attributes circular_saw_data 23572x2 378432 timetable
fileNameTCNone = "sawstopper_none.tdms"; fileNameTCSingle = "sawstopper_single.tdms"; channelGroup = "Circular Saw Data";
Write Timetable Without a Time Channel
On specifying TimeChannel
as "none"
, the start time and time step are added as properties of the channel. This time channel layout can be used only with a timetable that is regular in time, that is, with uniform time steps.
tdmswrite(fileNameTCNone, circular_saw_data, ChannelGroupName=channelGroup, TimeChannel="none");
info = tdmsinfo(fileNameTCNone);
info.ChannelList
ans=2×8 table
ChannelGroupNumber ChannelGroupName ChannelGroupDescription ChannelName ChannelDescription Unit DataType NumSamples
__________________ ___________________ _______________________ _____________________ __________________ ____ ________ __________
1 "Circular Saw Data" "" "Revolutions (1/min)" "" "" "Double" 47144
1 "Circular Saw Data" "" "Current (A)" "" "" "Double" 47144
The channel names in the TDMS-file map to the original timetable variable names.
Use the tdmsreadprop
function to inspect the start time (wf_start_time
) and time step (wf_increment
) of the data.
channel = info.ChannelList.ChannelName{1}; prop = tdmsreadprop(fileNameTCNone, ChannelGroupName=channelGroup, ChannelName=channel)
prop=1×7 table
name description unit_string wf_start_time wf_start_offset wf_increment wf_samples
_____________________ ___________ ___________ _____________________________ _______________ ____________ __________
"Revolutions (1/min)" "" "" 2022-04-19 14:18:32.304446999 0 2.8e-06 23572
Read the data from the TDMS-file and visually analyze the data using a stacked plot.
stackedplot(tdmsread(fileNameTCNone, TimeStep=seconds(prop.wf_increment)));
Write Timetable with a Time Channel
By default, the time channel layout is TimeChannel="single"
, which means a time channel is created that contains a timestamp for every sample. Typically this time channel layout is useful when writing measurments that are irregular in time.
tdmswrite(fileNameTCSingle, circular_saw_data, ChannelGroupName=channelGroup, TimeChannel="single");
Inspect the contents of the file. See that a time channel called "Time"
is created, which is derived from the time column of the original timetable.
info = tdmsinfo(fileNameTCSingle); info.ChannelList
ans=3×8 table
ChannelGroupNumber ChannelGroupName ChannelGroupDescription ChannelName ChannelDescription Unit DataType NumSamples
__________________ ___________________ _______________________ _____________________ __________________ ____ ___________ __________
1 "Circular Saw Data" "" "Time" "" "" "Timestamp" 47144
1 "Circular Saw Data" "" "Revolutions (1/min)" "" "" "Double" 47144
1 "Circular Saw Data" "" "Current (A)" "" "" "Double" 47144
Read the data from the TDMS-file, and visually analyze the data using a stacked plot with the time channel as the x-axis.
stackedplot(tdmsread(fileNameTCSingle, ChannelGroupName=channelGroup, RowTimes="Time"));