Checking a matrix for duplicates in specific row, removing the respective columns

1 次查看(过去 30 天)
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

采纳的回答

Bruno Luong
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
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 CenterFile Exchange 中查找有关 Numerical Integration and Differential Equations 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by