Finding sequences and choose first one from that sequence
古いコメントを表示
I have a matrix like this :
A=[1 7; 1 8; 2 2; 2 3; 2 4; 2 8; 4 3; 4 4; 4 5; 4 6];
I want to find a matrix (say B) from A as like bellow:
B= [1 7; 2 2; 2 8; 4 3];
That means, if there is a sequence (not sure if this si the exact word to describe the problem!) in the second column of A, then I want only first element of this sequence. For example: I have 1 7 and 1 8 in A..so I want 1 7. Similarly; I have 2 2; 2 3; 2 4; 2 8..so from here I want 2 2 and 2 8. Finally, for 4 3; 4 4; 4 5; 4 6--I want 4 3.
1 件のコメント
Kevin Phung
2019 年 2 月 15 日
編集済み: Kevin Phung
2019 年 2 月 15 日
"For example: I have 1 7 and 1 8 in A..so I want 1 7. Similarly; I have 2 2; 2 3; 2 4; 2 8..so from here I want 2 2 and 2 8. "
This is very contradicting...if youre only taking the first value for each sequence, why are you taking 2 8?
shouldn't your expected result be:
B = [1 7; 2 2; 4 3]?
採用された回答
その他の回答 (2 件)
Cris LaPierre
2019 年 2 月 17 日
編集済み: Cris LaPierre
2019 年 2 月 17 日
1 投票
Simplifying somewhat. Try this
% find magnitude of largest number in column 1
multFac = 10^ceil(log10(max(A(:,1))))
% Plan is to combine the 2 columns with multFac*A(:,1) + A(:,2), essentially grouping them by column 1.
% Take the difference, and remove any rows with sequential values (diff==1)
% This leaves the first value of each sequence
idx = diff(multFac*[0;A(:,1)]+[0;A(:,2)])~=1;
B = A(idx==1,:)
B = 17×2
1 15
1 21
2 8
10 11
10 15
16 15
19 20
19 24
19 28
20 4
22 9
22 15
31 16
37 24
61 26
64 10
76 18
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!