Azzera filtri
Azzera filtri

Finding all occurences of a string within a cell array (itself part of a struc)

1 visualizzazione (ultimi 30 giorni)
I have the following structure
dataDens =
dens: [1x172 double]
level: {1x172 cell}
raga: {1x172 cell}
within which dataDens.raga consists of (reducing the number of columns below for simplicity)
Columns 1 through 3
'Multani' 'Tori' 'Tori'
I'd like to find the indices at which 'Tori' appears (that is, [2 3] for the example above). However, all of the commands I tried (below) either give an error, or return blank outputs.
I think it's probably just a matter of adding/removing a curly bracket somewhere, or using some conversion; but I am at my wit's end, and hope someone can help clarify - thanks in advance!
indices = find(strcmp([dataDens.raga{:}], {'Tori'}))
indices = ismember('Tori', dataDens.raga)
[if,where] = ismember('Tori', dataDens.raga)

Risposta accettata

Jan
Jan il 26 Apr 2019
Modificato: Jan il 26 Apr 2019
match = strcmp('Tori', dataDens.raga) % Logical indexing
index = find(match) % Linear indexing
If you want to obtain the correspodning elements from the other fields, logical indexing is efficient:
dataDens.dens(match) % Usually faster than: dataDens.dens(index)

Più risposte (0)

Categorie

Scopri di più su Startup and Shutdown in Help Center e File Exchange

Prodotti


Release

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by