我从matlab参考手册
获得了这个 value = getfield(struct, 'field')
其中struct是1-by-1结构,返回指定字段的内容,相当于
value = struct.field
我该怎么做相反的
返回'field'
的getStringName(struct.field)
如果可以以类似于数组的数字方式指向该字段
类似于字段1 field
修改
如果我按照
进行操作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
答案 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
是结构,名称是字符串。