Why is unique() giving me the matrix after eliminating the common rows for these two matrices?

2 vues (au cours des 30 derniers jours)
I have A =
0.0000 0.0000
0.0000 1.0000
0.0000 0.0000
0.0000 1.0000
1.0000 0.0000
1.0000 0.0000
1.0000 1.0000
B =
0.1000 0.1000
0.1000 0.9000
0.1000 0.1000
0.1000 0.9000
0.9000 0.1000
0.9000 0.1000
0.9000 0.9000
After using unique I am still getting the exact same matrix as my output. Can anyone tell me why is that?
  1 commentaire
Jan
Jan le 8 Mar 2021
Modifié(e) : Jan le 8 Mar 2021
Please post your code and the input data. Currently all we see is A and B and that you mention, that unqiue has been used anywhere.

Connectez-vous pour commenter.

Réponses (2)

Jan
Jan le 8 Mar 2021
Modifié(e) : Steven Lord le 8 Mar 2021
If you use a matrix as input to unique, a vector is replied. So if you matrix is not changed, it cannot be an output of unique(). Because you did not post your code, I guess something like this happens:
B = [0.1000 0.1000
0.1000 0.9000
0.1000 0.1000
0.1000 0.9000
0.9000 0.1000
0.9000 0.1000
0.9000 0.9000];
unique(B); % This is no effect!
% You need:
uB = unique(B)
% Or maybe:
uB = unique(B, 'rows')
[SL: fixed typo]

Steven Lord
Steven Lord le 8 Mar 2021
If you're trying to find unique rows, two rows that display the same may not contain the same stored values.
A = [1 2; 1+eps 2] % First and second rows are NOT the same
A = 2×2
1.0000 2.0000 1.0000 2.0000
unique(A, 'rows')
ans = 2×2
1.0000 2.0000 1.0000 2.0000
To allow "close enough" to count you'd want to use uniquetol.
uniquetol(A, eps, 'ByRows', true)
ans = 1×2
1 2

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by