Mah*_*qui 2 string variables matlab struct matlab-struct
我创建了一个包含几个不同字段的结构.这些字段包含来自许多不同主题/参与者的数据.
在脚本的开头,我提示用户输入"主题编号",如下所示:
prompt='Enter the subject number in the format SUB_n: ';
SUB=input(prompt,'s');
Run Code Online (Sandbox Code Playgroud)
第34个主题的示例SUB_34.
我想命名我的结构,使它包含这个字符串......即我想要我的结构名称SUB_34,例如SUB_34.field1.但我不知道该怎么做.
我知道你可以为特定的字段名称分配字符串,例如,S如果我想要field1被调用,z则可以为结构分配字符串
S=struct;
field1='z';
S.(field1);
Run Code Online (Sandbox Code Playgroud)
但它不适用于结构名称.
有人可以帮忙吗?
谢谢
而不是创建名为SUB_34I的结构,强烈建议仅使用结构数组,并让用户只需输入主题编号.
number = input('Subject Number')
S(number) = data_struct
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下命令再次找到它:
subject = S(number);
Run Code Online (Sandbox Code Playgroud)
如果你真的坚持它,你可以使用@Sembei评论中提出的方法eval来获取结构.你真的不应该这样做
S = eval([SUB, ';']);
Run Code Online (Sandbox Code Playgroud)
或者设置结构
eval([SUB, ' = mydata;']);
Run Code Online (Sandbox Code Playgroud)
不这样做的一个(很多)原因是我可以在你的提示符下输入以下内容:
>> prompt = 'Enter the subject number in the format SUB_n: ';
>> SUB = input(prompt, 's');
>> eval([SUB, ' = mydata;']);
Run Code Online (Sandbox Code Playgroud)
我输入:
clear all; SUB_34
Run Code Online (Sandbox Code Playgroud)
由于将输入字符串作为命令进行求值,因此会产生无法预料的后果,即它会删除所有数据eval.使用eval用户输入假定用户是永远不会永远写的东西畸形或恶意,意外或其他原因.