在matlab中以字符串形式获取字段名

在matlab中以字符串形式获取字段名,matlab,struct,Matlab,Struct,我从matlab参考手册中得到了这个 value=getfield(结构,'field') 其中struct是一个1乘1结构,返回指定字段的内容,相当于 value=struct.field 我怎么能做相反的事呢 getStringName(struct.field),返回'field' 也可以用类似于阵列的数值方式指向场 类似于字段1的结构{1}field 编辑 如果我做下面的事 结构名称(1) 我得到一个字段名和维度的列表 Speed: [2244x1 dou

我从matlab参考手册中得到了这个

value=getfield(结构,'field')

其中struct是一个1乘1结构,返回指定字段的内容,相当于

value=struct.field

我怎么能做相反的事呢

getStringName(struct.field),返回
'field'

也可以用类似于阵列的数值方式指向场

类似于字段1的结构{1}
field

编辑

如果我做下面的事

结构名称(1) 我得到一个字段名和维度的列表

                Speed: [2244x1 double]
                 Time: [2244x1 double] ... and so on 
我想抓住标题速度作为字符串,如果可能的话

structName(1).field(1)表示速度,但不执行structName(1).Speed

我想将每个字段打印到一个带有字段名的文件中

所以如果我这样做了

for i=1:sizeOfStruct
   printToFile(structName(i)); %<=== accessing field by index, problem 2
end

function printToFile(structField)
   structFieldStr = getStrFiledName(structField); %<=== obtain field string, main problem
   filename = strcat(fileLoc, '/profile/', structFieldStr, '.dat');
   %...   then open file and dump everything
end
i=1时的
:sizeOfStruct

printToFile(结构名(i));% 这不是你问题的完整答案,但这应该让你开始:

s.a = 11;
s.b = 22;
s.c = 33;
names = fieldnames(s);
for i = 1:length(names)
    fprintf('Field %s = %g\n', names{i}, s.(names{i}))
end
结果:

Field a = 11
Field b = 22
Field c = 33

请注意以编程方式访问字段名的语法:
s.(name)
,其中
s
是一个结构,name是一个字符串。

不是问题的完整答案,但这应该让您开始:

s.a = 11;
s.b = 22;
s.c = 33;
names = fieldnames(s);
for i = 1:length(names)
    fprintf('Field %s = %g\n', names{i}, s.(names{i}))
end
结果:

Field a = 11
Field b = 22
Field c = 33

请注意以编程方式访问字段名的语法:
s.(name)
,其中
s
是一个结构,name是一个字符串。

除非它出现在赋值的左边,
struct.field
只是一个值,例如
2.5
,并且不再与结构对象有任何关联。函数是否给出了您想要的结果,或者您正在尝试查找包含特定值的字段?您也可以尝试,不确定这是否适用于结构成员FieldNames给了我一个部分,剩下的是按其位置或字段名称抓取该字段除非它出现在赋值的左侧,
struct.field
只是一个值,例如
2.5
,并且不再与struct对象有任何关联。函数是否给出了您想要的,或者您是否正在尝试查找包含特定值的字段?您也可以尝试,不确定这是否适用于结构成员fieldnames给了我一个部分,剩下的是按其位置抓取该字段,或者字段名引用不存在的字段“fieldnames”。如果我尝试使用s.fieldnames,会出现错误,但是我使用了字段名,但是s.(name)仍然不能工作“未定义的函数或变量“a”。“对不起,我仍然在编辑一些错误,现在应该可以工作了。”。这就是发布未测试代码时得到的结果…引用不存在的字段“fieldnames”。如果我尝试使用s.fieldnames,会出现错误,但是我使用了字段名,但是s.(name)仍然不能工作“未定义的函数或变量“a”。“对不起,我仍然在编辑一些错误,现在应该可以工作了。”。这就是您在发布未经测试的代码时得到的结果。。。