我有一個非常大的矩陣(901x1801),它是通過組合三個相似數組的值(使用它們中的重複值)生成使用數學表達式的唯一代碼而生成的。矩陣填充了這些代碼。檢查一個大矩陣中的重複條目matlab
我的問題是...如何檢查矩陣(901x1801)的每個值是否是唯一的,甚至不會重複一次?
或... 誰能告訴我如何通過組合三個相似元素的數組來生成一個矩陣,每個生成的值都是唯一的。
早期回覆將會大受歡迎。 在此先感謝。
我有一個非常大的矩陣(901x1801),它是通過組合三個相似數組的值(使用它們中的重複值)生成使用數學表達式的唯一代碼而生成的。矩陣填充了這些代碼。檢查一個大矩陣中的重複條目matlab
我的問題是...如何檢查矩陣(901x1801)的每個值是否是唯一的,甚至不會重複一次?
或... 誰能告訴我如何通過組合三個相似元素的數組來生成一個矩陣,每個生成的值都是唯一的。
早期回覆將會大受歡迎。 在此先感謝。
隨着大型矩陣M
,讓所有的唯一值,使用:
uniqueValues = unique(M(:));
然後,以瞭解是否有任何重複的值,你可以使用:
repeatedValuesFound = numel(uniqueValues) ~= numel(M);
也就是說,如果唯一值數組與原始數組具有相同數量的元素,則原始數組的所有元素都必須是唯一的。
要找到重複的M中的位置,使用下面的代碼:
V = M(:); % flatten
[Vs, Vi] = sort(V); % sort, Vi are indices into V
delta = Vs(2:end) - Vs(1:end-1); % delta==0 means duplicate
dup1 = Vi(find(delta == 0)); % dup1 has indices of duplicates in V
dup2 = Vi(find(delta == 0) + 1); % dup2 has the corresponding other
% rewrite to [row col]
[dup1(:,1) dup1(:,2)] = ind2sub(size(M), dup1);
[dup2(:,1) dup2(:,2)] = ind2sub(size(M), dup2);
DUP1和DUP2的行現在包含在併購是重複的位置。
你寫道你的矩陣「充滿了這些代碼」,有些東西不清楚,你的數組是否包含數字或字符串(表達式)? – bla 2013-04-11 17:39:05
我想檢查的矩陣填充了用3個不同數組(數字)生成的代碼。我必須使用特定的數據陣列來生成這些唯一的代碼。我不能只使用隨機數字。 – Mushi 2013-04-11 18:05:29