0
我有一個大矩陣,我們稱之爲A,其尺寸爲Mx3,例如, M = 4000行×3列。矩陣中的每一行都包含三個數字,例如。 [241 112 478]。在這三個數字中,我們可以構造三對,例如。 [241 112],[112 478],[241 478]。在其他3999行中:MATLAB高效地找到在一個大矩陣中包含三個元素中的兩個元素的行
- 對於三對中的每一對,恰好一行M(僅一個)將包含相同的對。但是,數字的順序可能會混亂。例如,只有一行將會顯示:[333 478 112]。沒有其他行將同時具有478和112. 我有興趣找到該行的索引,對於這三對中的每一對。然後輸出應該是另一個矩陣,稱之爲B,具有相同的尺寸4000x3,其中每行具有原始矩陣A中共享一對數字的行的索引。
- 沒有其他行將包含相同的三個數字。
- 其他行可能不包含任何數字或其中一個數字。
這是一個完成此功能,但速度很慢 - 我想知道是否有更有效的方法。提前致謝!
M=size(A,1); % no elements
B=zeros(M,3);
for j=1:M
l=1;
k=1;
while l<4 % there cant be more than 3
if k~=j
s=sum(ismember(A(j,:),A(k,:)));
if s==2
B(j,l)=k;
l=l+1;
end
end
k=k+1;
end
太棒了,速度更快!謝謝! – Kurt