2

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

在脚本的开头,我提示用户输入“主题编号”,如下所示:

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

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

任何人都可以帮忙吗?

谢谢

4

1 回答 1

7

与其创建命名的结构,SUB_34强烈建议只使用结构数组并让用户简单地输入主题编号

number = input('Subject Number')
S(number) = data_struct

然后您可以简单地使用以下方法再次找到它:

subject = S(number);

如果你真的坚持,你可以使用@Sembei 在评论中提出的方法eval来获取结构。你真的不应该这样

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假设用户永远不会写出格式错误或恶意的东西,无论是意外还是其他。

于 2016-07-19T15:10:20.033 回答