在matlab中将字段名称作为字符串

时间:2013-09-24 19:07:37

标签: matlab struct

我从matlab参考手册

获得了这个

value = getfield(struct, 'field')

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

value = struct.field

我该怎么做相反的

返回'field'

getStringName(struct.field)

如果可以以类似于数组的数字方式指向该字段

类似于字段1 field

的struct {1}

修改

如果我按照

进行操作

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

                Speed: [2244x1 double]
                 Time: [2244x1 double] ... and so on 

我想把标题速度作为字符串,如果可能的话

structName(1).filed(1)for Speed,不做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

1 个答案:

答案 0 :(得分:1)

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

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是结构,名称是字符串。