- All names in singular
- When it matters if a variable is a scalar entity or a list of objects: aMyObject and MyObjectList.
Need to use cellfun for returning index of array
3 次查看(过去 30 天)
显示 更早的评论
Hello
I need to find index for string in structures when compare with required string.
I use the following code
for i=1:numel(LD)
if strcmp('Lam1',LD(i).Name)
break;
end
end
where i = array index.
Here I will find the index for string residing in LD(:).Names
is their any easy way to find the index using cellfun
I tried like this cellfun(@strcmp,'Lam1',LD(:).Names)
should return the index, correct me I am worng.
2 个评论
Jan
2012-7-9
编辑:Jan
2012-7-9
You forgot to explain the type of LD.Name: Are they strings or cell strings? And btw., is it LD.Name or LD.Names in plural? I avoid corresponding programming errors by the simple convention:
I do not think that this is nicer, but avoiding sources of bugs is more important, especially because useful programs tend to grow.
采纳的回答
Jan
2012-7-9
编辑:Jan
2012-7-9
No need for cellfun or arrayfun:
index = find(strcmp('Lam1', {LD.Name}), 1);
{LD.Name} is efficient, because it creates shared data copies only - this means that the actual strings are not duplicated.
2 个评论
Jan
2012-7-9
find(., 1) searchs for the first occurrence only, see help find. On one hand this is a little bit faster, if LD is really large. On the other hand it replicates the behaviour of your function, which breaks after the first occurence also.
更多回答(2 个)
F.
2012-7-9
try this :
regexp( { LD(:).Name } , 'Lam1' , 'once )
it's to find the first occurance of Lam1 in the cell array { LD(:).Name }
0 个评论
Walter Roberson
2012-7-9
编辑:Walter Roberson
2012-7-9
cellfun(@(S) strcmp('Lam1',S), {LD.Name} )
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!