Matlab';s';变量名称';不接受数字和;非数字条目

Matlab';s';变量名称';不接受数字和;非数字条目,matlab,properties,printf,eval,variable-names,Matlab,Properties,Printf,Eval,Variable Names,假设我们有一个1x3表a=表(1,2,3) 其标题名称应包含数字和非数字的混合: A.Properties.VariableNames={'from 1st-5th' 'from 6th-10th' ... 'from 11th-15th'}; 并生成以下错误: from 1st-5th'不是有效的变量名。 我尝试了sprintf函数来解决这个错误,但是formatSpec参数令人困惑。此外,我阅读了有关eval的内容,并想知道它在我的上下文中是否有用 genvarname使用的结果: 正如您

假设我们有一个1x3表
a=表(1,2,3)

其标题名称应包含数字和非数字的混合:

A.Properties.VariableNames={'from 1st-5th' 'from 6th-10th' ... 'from 11th-15th'};
并生成以下错误:

from 1st-5th'不是有效的变量名。

我尝试了
sprintf
函数来解决这个错误,但是
formatSpec
参数令人困惑。此外,我阅读了有关
eval
的内容,并想知道它在我的上下文中是否有用

genvarname
使用的结果:


正如您的错误非常清楚地指出的那样,您为变量名提供的字符串是

变量名,指定为非空且不同的字符向量的单元格数组。变量名必须是有效的MATLAB®变量名

您可以使用内置函数将字符串转换为

或者,提出您自己的有效变量名的变量名(没有空格或连字符)


正如您的错误非常清楚地指出的那样,您为变量名提供的字符串是

变量名,指定为非空且不同的字符向量的单元格数组。变量名必须是有效的MATLAB®变量名

您可以使用内置函数将字符串转换为

或者,提出您自己的有效变量名的变量名(没有空格或连字符)


谢谢,@Suever!不幸的是,这并没有产生预期的结果(请参见上面的快照)@John如果
genvarname
的输出不起作用,请自己更改标签,使其符合您的要求(它们必须是有效的变量名)。你可以看到我发布的定义有效名称的链接谢谢@Suever!变通解决方案(例如“from_1st_5th”)目前已经完成了它的工作,但我仍在以所述的形式寻找实际结果above@John这是不可能的,因为这些字符串不是有效的变量名称@Suever!多谢了,汉克斯,@Suever!不幸的是,这并没有产生预期的结果(请参见上面的快照)@John如果
genvarname
的输出不起作用,请自己更改标签,使其符合您的要求(它们必须是有效的变量名)。你可以看到我发布的定义有效名称的链接谢谢@Suever!变通解决方案(例如“from_1st_5th”)目前已经完成了它的工作,但我仍在以所述的形式寻找实际结果above@John这是不可能的,因为这些字符串不是有效的变量名称@Suever!谢谢
A.Properties.VariableNames = genvarname({'from 1st-5th' 'from 6th-10th' 'from 11th-15th'});
names = {'from 1st-5th' 'from 6th-10th' 'from 11th-15th'};
A.Properties.VariableNames = regexprep(names, '[ \-]', '_');