1
我有一個m×n的矩陣(n> 3),其中兩個第一列有很多重複的值。我有另外兩個向量,稱它們爲uniqueCol1
和uniqueCol2
,它們包含兩列的所有可能值。查找匹配多個條件之一的數組元素,按匹配條件排序
我想找到所有的子矩陣,它將是p-by-n(p = < m),其中兩個第一列匹配uniqueCol1
和uniqueCol2
中的給定值。有多達length(uniqueCol1) * length(uniqueCol2)
這樣的子矩陣。
我可以使用ismember()
來幫助找到這些子矩陣,但我不能看到這樣做的方式,我會知道輸出的哪些部分匹配什麼條件。
或者我可以做一個循環,如下所示,但這是非常緩慢的。有沒有一種矢量化以下的方法?我想這個解決方案的輸出是這些子矩陣的一個單元陣列,因爲每個子矩陣的大小通常不一樣(所以多維數組將不起作用)。
myBigMatrix = round(wgn(1000,6,1) * 3);
uniqueCol1 = unique(myBigMatrix(:,1));
uniqueCol2 = unique(myBigMatrix(:,2));
for i = 1:length(uniqueCol1)
for j = 1:length(uniqueCol2)
mySubMatrix = myBigMatrix(...
myBigMatrix(:,1) == uniqueCol1(i) & ...
myBigMatrix(:,2) == uniqueCol2(j) , :);
% then do something with mySubMatrix,
% as it's clear from i and j what condition it matched
end
end
精湛,是加快我的測試情況下增長超過10倍 – funklute
我說'accumarray'是強大;-) –