Primo passo, utilizzare un array di celle piuttosto che array di stringhe:
arr = {'hello', 'world'; 'hello', 'again'; 'I----', 'said-'; 'hello', 'again'};
In secondo luogo, uso unico per ottenere le stringhe univoche (questo non funziona su un array di stringhe, che è il motivo per cui suggerisco la cellula):
[unique_strings, ~, string_map]=unique(arr);
modalità Quindi utilizzare sulla variabile string_map per trovare i valori più comuni:
most_common_string=unique_strings(mode(string_map));
fonte
2013-07-03 14:12:45
+1: ma non è necessario disporre di array di celle. Puoi usare 'unique (arr, 'rows')'. –
Oh bene, grazie! Non li uso molto spesso, non conoscevo questa funzione. –
Solo una nota sugli array di stringhe e il commento sopra: in questo caso, la stringa dovrebbe essere riformattata in modo che ogni stringa fosse una riga separata, invece di provare a disporre di due stringhe su una singola riga - funziona solo come una cella altrimenti Matlab considera l'intera linea una singola stringa concatenata, cioè l'iniziale 'arr' nella domanda è equivalente a' ['helloworld', 'helloagain';, 'I ---- said -'; 'helloagain'] ' –