I'd like to delete collums that start with a value that already has been in the matrix
古いコメントを表示
This is the matrix I'm facing;
1 1 1 1 4 5 5 7 14 14 14 14 14 15 15 15 17
4 3 2 1 1 2 1 1 5 4 3 2 1 3 2 1 2
1 1 1 1 0 1 1 1 1 1 1 1 1 3 2 1 2
And this is the matrix I want to become:
1 4 5 7 14 15 17
4 1 2 1 5 3 2
1 0 1 1 1 3 2
So I want to delete the collums, that have a value on the first row that already has passed in the first row... No idea how
It would be great to keep it as simple as possible
回答 (2 件)
Titus Edelhofer
2015 年 5 月 10 日
Hi Benoit,
what about this solution? Assuming your matrix is named A,
[~,idx] = unique(A(1,:));
Anew = A(:, idx);
Titus
Walter Roberson
2015 年 5 月 10 日
row1 = A(1,:);
[urow1, row1order] = unique(row1);
[urow1indices, order_reorder] = sort(row1order);
selected_subset = A(:,row1order(order_reorder));
This can be simplified if it is guaranteed that the elements in the first row are in non-decreasing order.
2 件のコメント
Benoit Cuyvers
2015 年 5 月 10 日
Titus Edelhofer
2015 年 5 月 11 日
Note, that in recent versions of MATLAB unique has the parameter setOrder which is sorted per default. No need to sort the order of indices, simply indexing should do.
カテゴリ
ヘルプ センター および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!