我创建了一个包含几个不同字段的结构。这些字段包含来自许多不同主题/参与者的数据。
在脚本的开头,我提示用户输入"主题编号"像这样:
prompt='Enter the subject number in the format SUB_n: ';
SUB=input(prompt,'s');
第34个主题的示例SUB_34。
我想命名我的结构,使其包含此字符串...即我希望我的结构名称为SUB_34
,例如SUB_34.field1。但我不知道该怎么做。
我知道您可以为特定字段名称指定字符串,例如,如果我希望S
被调用field1
,那么
z
指定字符串
S=struct;
field1='z';
S.(field1);
有效,但它不适用于结构名称。
有人可以帮忙吗?
由于
答案 0 :(得分:7)
我不会创建名为SUB_34
的结构,而是强烈建议只使用结构数组而让用户只输入主题数字。
number = input('Subject Number')
S(number) = data_struct
然后你可以使用:
再次找到它subject = S(number);
如果您真的坚持,可以使用@Sembei评论中提出的方法,使用eval
来获取结构。你真的是should not do this though
S = eval([SUB, ';']);
或者设置结构
eval([SUB, ' = mydata;']);
不这样做的一个(很多)原因是我可以在您的提示符下输入以下内容:
>> prompt = 'Enter the subject number in the format SUB_n: ';
>> SUB = input(prompt, 's');
>> eval([SUB, ' = mydata;']);
我输入:
clear all; SUB_34
由于eval
将输入字符串作为命令进行求值,因此会删除所有数据的无法预料的后果。在用户输入上使用eval
假定用户永远不会写错误或恶意,意外或其他方式。