2010-03-06 12 views
6

Ho una cella 45x2 in MATLAB, con la prima colonna una matrice di doppi dimensioni di dimensioni arbitrarie.Identificazione degli uniques in un array di celle

Alcune di queste matrici vengono ripetute, mentre altre no. Sto tentando di rimuovere solo le matrici uniche (ma registrando il numero di ripetizioni) e mantenere la seconda colonna così com'è.

Ho provato un certo numero di cose (tabulate, hist et al) ma falliscono tutte a causa della struttura cellulare (credo). Come si fa a fare questo, a parte il looping di ognuno di essi individualmente?

risposta

11

Se si converte le vostre matrici di stringhe, è possibile eseguire unico su di loro:

%# create a sample cell array 
mc = {magic(3);magic(4);magic(4);magic(5);magic(3);magic(4)} 

%# convert to strings 
mcs = cellfun(@(x)(mat2str(x)),mc,'uniformoutput',false); 

%# run unique 
[uniqueCells,idxOfUnique,idxYouWant] = unique(mcs); 
+0

voilà! grazie molto! – malangi

+0

Si noti che la seconda riga può essere semplificata in 'mcs = cellfun (@ mat2str, mc, 'UniformOutput', false);' –

Problemi correlati