Need to use cellfun for returning index of array

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 commentaires

Jan
Jan le 9 Juil 2012
Modifié(e) : Jan le 9 Juil 2012
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:
  • All names in singular
  • When it matters if a variable is a scalar entity or a list of objects: aMyObject and MyObjectList.
I do not think that this is nicer, but avoiding sources of bugs is more important, especially because useful programs tend to grow.
thanks for your nice comments

Connectez-vous pour commenter.

 Réponse acceptée

Jan
Jan le 9 Juil 2012
Modifié(e) : Jan le 9 Juil 2012
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 commentaires

ya, it works !! what actually happening in side can you brief me. why to pass 1 as argument for 'find' function.
Jan
Jan le 9 Juil 2012
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.

Connectez-vous pour commenter.

Plus de réponses (2)

F.
F. le 9 Juil 2012
try this :
regexp( { LD(:).Name } , 'Lam1' , 'once )
it's to find the first occurance of Lam1 in the cell array { LD(:).Name }
Walter Roberson
Walter Roberson le 9 Juil 2012
Modifié(e) : Walter Roberson le 9 Juil 2012
cellfun(@(S) strcmp('Lam1',S), {LD.Name} )

Catégories

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by