2010-03-06 13 views
6

Tengo una celda de 45x2 en MATLAB, con la primera columna una matriz de dobles de tamaño arbitrario.Identificación de elementos únicos en una matriz de celdas

Algunas de estas matrices se repiten, mientras que otras no. Estoy intentando quitar solo las matrices únicas (pero registrando el número de repeticiones), y mantener la segunda columna como está.

He intentado varias cosas (tabulate, hist et al) pero todas fallan debido a la estructura de la celda (creo). ¿Cómo haría uno para hacer esto, sin pasar por cada uno de ellos individualmente?

Respuesta

11

Si convierte sus matrices para cuerdas, puede ejecutar único en ellos:

%# 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

listo! ¡muchas gracias! – malangi

+0

Tenga en cuenta que la segunda línea se puede simplificar a 'mcs = cellfun (@ mat2str, mc, 'UniformOutput', false);' –

Cuestiones relacionadas