Checking a matrix for duplicates in specific row, removing the respective columns
4 ビュー (過去 30 日間)
古いコメントを表示
Claudius Simon Appel
2020 年 8 月 6 日
コメント済み: Claudius Simon Appel
2020 年 8 月 6 日
So, I try to explain this.
I have a two-row matrix of values, [x;y], f.e.
x=[1 2 2 3 4 5 6 6 7]
y=[1 2 3 4 5 6 7 7 8]
being merged into the matrix:
d= [1 2 2 3 4 5 6 6 7;
1 2 3 4 5 6 7 7 8]
I then want to check this matrix for repeats in the first row & remove the respective columns, while saving the x values of the columns being removed as a seperate vector. So Output should be something like:
d=[1 3 4 5 7;
1 3 4 5 8]
x_cut=[2 6]
It should be noted that this would have to scan for multiple repeats of different values, as shown above.
Thank you.
Have a great day & stay safe
Claudius Appel
0 件のコメント
採用された回答
Bruno Luong
2020 年 8 月 6 日
編集済み: Bruno Luong
2020 年 8 月 6 日
d= [1 2 2 3 4 5 6 6 7;
1 2 3 4 5 6 7 7 8]
dd = diff([nan,d(1,:),nan])==0;
remove = dd(1:end-1) | dd(2:end)
x_cut = unique(d(1,remove),'stable')
d(:,remove) = []
3 件のコメント
Bruno Luong
2020 年 8 月 6 日
編集済み: Bruno Luong
2020 年 8 月 6 日
d= [1 2 2 3 4 5 6 6 7;
1 2 3 4 5 6 7 7 8]
dd = diff([nan,d(1,:),nan])==0;
remove = dd(1:end-1) | dd(2:end);
cut = d(:,remove)
keep = d(:,~remove) % rename keep to d if you like
Or if yoy want to get cut from x_cut
dd = diff([nan,d(1,:),nan])==0;
remove = dd(1:end-1) | dd(2:end)
x_cut = unique(d(1,remove),'stable')
cut = d(:,ismember(d(1,:), x_cut))
d(:,remove) = []
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Numerical Integration and Differential Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!