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
假设用户永远不会写出格式错误或恶意的东西,无论是意外还是其他原因。
我创建了一个包含几个不同字段的结构。这些字段包含来自多个不同 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
假设用户永远不会写出格式错误或恶意的东西,无论是意外还是其他原因。