Matlab中变量的结构名称

Struct name from variable in Matlab

我创建了一个包含几个不同字段的结构。这些字段包含来自多个不同 subjects/participants 的数据。

在脚本的开头,我提示用户输入 "Subject number",如下所示:

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

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

有人能帮忙吗?

谢谢

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