2014-03-06 58 views
0

说我有一个有很多名字的大型结构(例如'a','b'等等)。给定一个名称,而不知道特定名称的指标,我想找到这个名字,类似的发现()命令,这样我可以写其他字段它在Matlab结构中找到字段

dat.name = 'a' 
dat(2).name = 'b' 
... 
dat(26).name = 'z' 

dat.name == 'a' 

% MATLAB error 
Error using == 
Too many input arguments. 

回答

1

如果我undersand corretly,你想找到一个索引/索引结构数组中的哪个名称字段赋予了值?如果是的话,你可以做如下:

indexes = find(strcmp({dat(:).name}, 'a')) 
0

如果所有的字符串是一个字符,你可以使用

>> find([dat.name] == 'b') %// concat into a single string (character vector) 

ans = 

    2 

如果字符串可以有任意数目的字符:

>> [temp{1:numel(dat)}] = deal(dat.name); %// build a cell array of strings 
>> find(strcmp(temp,'b')) 

ans = 

    2 
+0

这个工程还可以,但我更喜欢马尔辛推荐的一个衬垫。不过谢谢 – nagordon

1

要获取结构中的字段列表(作为字符串的单元数组),请使用:

fields(myStruct) 

要访问其中字段的名称在变量举行(字符串)字段的值,使用:

myStruct.(fieldName)