2010-03-06 45 views
6

我在MATLAB中有一個45x2單元,第一列是雙倍任意大小的矩陣。識別單元陣列中的唯一標識

其中一些矩陣是重複的,而其他矩陣不是。我試圖只去掉唯一的矩陣(但記錄重複次數),並保持第二列原樣。

我已經嘗試了一些東西(製表,hist等),但他們都失敗了,因爲細胞結構(我認爲)。如何做到這一點,而不是單獨循環每一個?

回答

11

如果您將您的矩陣爲字符串,您可以運行他們獨特:

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

瞧!非常感謝! – malangi 2010-03-06 14:45:35

+0

請注意,第二行可以簡化爲'mcs = cellfun(@ mat2str,mc,'UniformOutput',false);' – 2016-11-22 16:31:25