2014-03-06 99 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)