Powiedzmy, że mam tablicę komórek
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
Co mam zrobić, jeśli chcę znaleźć indeks 'KU'
?
string
matlab
cell-array
Benzoes
źródło
źródło
Odpowiedzi:
Myślę, że poniższy kod może załatwić sprawę:
To wraca
źródło
Upłynęło 0,001976 sekund.
Upłynęło 0,000014 sekund.
WIĘC, wyraźnie
strcmp('KU', strs)
zajmuje znacznie mniej czasu niżismember(strs,'KU')
źródło
Od 2011a zalecanym sposobem jest:
Jeśli chcesz uzyskać indeks całkowity (którego często nie potrzebujesz), możesz użyć:
strfind
jest przestarzały, więc staraj się go nie używać.źródło
Widzę, że wszyscy przegapili najważniejszy błąd w Twoim kodzie:
Powinien być:
lub
Teraz, jeśli będziesz używać
Nie będziesz miał zmartwień :).
źródło
Inne odpowiedzi są prawdopodobnie prostsze w tym przypadku, ale dla kompletności pomyślałem, że dodam użycie cellfun z anonimową funkcją
co ma tę zaletę, że można łatwo uczynić ją niewrażliwą na wielkość liter lub użyć jej w przypadkach, gdy masz tablicę komórek struktur:
źródło
Najkrótszy kod:
Ale zwraca tylko pierwszą pozycję w
strs
. Jeśli element nie został znaleziony, toind=0
.źródło
Funkcje strcmp i strcmpi to najbardziej bezpośredni sposób na zrobienie tego. Przeszukują tablice.
źródło
Próbowałeś
zobacz link
alternatywnie,
powinien również działać, jeśli się nie mylę.
źródło