MATLAB R2021a创建Timetable时设置VariableUnits报错求助
问题:MATLAB R2021a中创建Timetable时使用VariableUnits参数报错的原因
我正在为电机仿真创建Timetable,希望跟踪各变量的单位。以下是CreateTT.m脚本中的代码:
time.start = duration(0,0,0,0); %Start: 0m, 0s, 0ms time.end = duration(0,1,0,0); %end: 1m time.step = duration(0,0,0,1); %step: 1 ms time.numsteps = (time.end - time.start) / time.step; varNames = {'Angle','Angular Speed','Voltage','Current','Magnetic Field'}; varTypes = {'double','double','double','double','double'}; varUnits = {'degrees','deg/s','Volts','Amps','Tesla'}; data = timetable('Size', [time.numsteps, 5], 'VariableTypes', varTypes, 'TimeStep', time.step, 'VariableNames', varNames, 'VariableUnits', varUnits);
运行后出现错误:
Error using timetable (line 335)
Invalid parameter name: VariableUnits.Error in CreateTT (line 11) data = timetable('Size',
[time.numsteps, 5], 'VariableTypes', varTypes, 'TimeStep', time.step,
'VariableNames', varNames, 'VariableUnits', varUnits);
我使用的是R2021a Update7版本。查阅在线文档可知VariableUnits是创建Timetable的有效参数,移除该参数后代码可正常运行,且data.Properties中显示存在VariableUnits属性(为空)。请问我哪里操作有误?
解答
问题出在MATLAB版本兼容性上:
VariableUnits作为timetable函数的创建参数,是R2022a版本才新增的功能,你的R2021a版本不支持直接在创建时通过该参数赋值。- R2021a中
timetable对象确实已存在VariableUnits属性,但只能在创建完成后通过属性赋值的方式设置,不能在创建时作为输入参数传递。
修正后的代码如下:
time.start = duration(0,0,0,0); %Start: 0m, 0s, 0ms time.end = duration(0,1,0,0); %end: 1m time.step = duration(0,0,0,1); %step: 1 ms time.numsteps = (time.end - time.start) / time.step; varNames = {'Angle','Angular Speed','Voltage','Current','Magnetic Field'}; varTypes = {'double','double','double','double','double'}; varUnits = {'degrees','deg/s','Volts','Amps','Tesla'}; % 先创建不带VariableUnits参数的timetable data = timetable('Size', [time.numsteps, 5], 'VariableTypes', varTypes, 'TimeStep', time.step, 'VariableNames', varNames); % 创建完成后设置VariableUnits属性 data.Properties.VariableUnits = varUnits;
这样既可以正常创建timetable,也能正确设置各变量的单位属性。
内容的提问来源于stack exchange,提问作者Trashman
相关产品推荐
相关产品推荐

