1

我有这个来自 matlab 参考手册

value = getfield(struct, 'field')

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

value = struct.field

我该怎么做相反的事

getStringName(struct.field) 返回'field'

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

像字段 1 的 struct{1}field

编辑

如果我执行以下操作

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

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

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

structName(1).filed(1) 为 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
4

1 回答 1

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

于 2013-09-24T19:29:34.447 回答