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

4 Ansichten (letzte 30 Tage)
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 Kommentar
Jan
Jan am 8 Mär. 2021
Bearbeitet: Jan am 8 Mär. 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.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Jan
Jan am 8 Mär. 2021
Bearbeitet: Steven Lord am 8 Mär. 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 am 8 Mär. 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

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by