Matlab

时间:2016-07-19 15:04:42

标签: string matlab variables struct matlab-struct

我创建了一个包含几个不同字段的结构。这些字段包含来自许多不同主题/参与者的数据。

在脚本的开头,我提示用户输入"主题编号"像这样:

 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);

有效,但它不适用于结构名称。

有人可以帮忙吗?

由于

1 个答案:

答案 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假定用户永远不会写错误或恶意,意外或其他方式。