ho una cella in MATLAB cui ogni elemento contiene un vettore di lunghezza diversaConteggio righe uniche in una cella piena di vettori
esempio
C = {[1 2 3], [2 4 5 6], [1 2 3], [6 4], [7 6 4 3], [4 6], [6 4]}
Come potete vedere, alcuni dei vettori sono ripetuti, altri sono unici.
Voglio contare il numero di volte in cui ogni vettore si verifica e restituire il conteggio in modo tale da poter popolare una tabella in una GUI in cui ogni riga è una combinazione univoca e la data mostra quante volte ciascuna combinazione si verifica.
ad es.
Count
"[1 2 3]" 2
"[6 4]" 2
"[2 4 5 6]" 1
"[7 6 4 3]" 1
"[4 6]" 1
mi dovrebbe dire che l'ordine dei numeri in ciascun vettore è importante cioè [6 4] non è uguale a [4 6].
Qualche idea su come posso farlo in modo abbastanza efficiente?
Grazie a persone che hanno commentato finora. Come @Divakar ha gentilmente sottolineato, ho dimenticato di menzionare che i valori nel vettore possono essere più lunghi di una cifra. Ad esempio [46, 36 28]
. Il mio codice originale concatenerebbe il vettore [1 2 3 4]
a 1234
quindi utilizzare hist per eseguire il conteggio. Certamente questo cade a pezzi quando si arriva al di sopra di cifre singole, come si può notare la differenza tra [1, 2, 3, 4]
e [12, 34]
.
quando hai detto "in modo efficiente", intendi efficienza di runtime o qualcos'altro? – Divakar
Sì - tempo di esecuzione veloce. La ragione è che dovrò applicarlo a celle molto grandi e quindi a molti vettori. :-) – Mark