Comparing more than two columns of a matrix using '<' or '>' symbol
Ältere Kommentare anzeigen
How to compare more than two columns of a matrix using '<' or '>' symbol?
For example, if I have a matrix A and if I compare the columns using '<' symbol
A=
2 5 4
4 1 2
6 0 1
7 5 8
I should get the output as
1 0 0
0 1 0
0 1 0
0 1 0
So, is there any solution that doesn't restrict for any two columns or three columns but in general more than two columns
Akzeptierte Antwort
Weitere Antworten (3)
Steven Lord
am 26 Okt. 2015
Take a look at the second output of the MIN function.
A = [2 5 4; 4 1 2; 6 0 1; 7 5 8];
[~, index] = min(A, [], 2)
Then use either a FOR loop or SUB2IND to fill in the appropriate elements in your output matrix.
1 Kommentar
Stephen23
am 26 Okt. 2015
>> A = [2 5 4; 4 1 2; 6 0 1; 7 5 8];
>> [~,idx] = min(A,[],2);
>> X = false(size(A));
>> X(sub2ind(size(A),1:size(A,1),idx.')) = true
X =
1 0 0
0 1 0
0 1 0
0 1 0
Lessmann
am 26 Okt. 2015
Hi,
you can achieve this by using
B = diff(-A,1,2) < 0
You have to concatenate a column of zeros, so that A and B are of equal size.
1 Kommentar
Thorsten
am 26 Okt. 2015
That's only valid if you want to restrict your comparison to adjacent columns. In the example, column 1 is not compared to 3.
Thorsten
am 26 Okt. 2015
A = [2 5 4
4 1 2
6 0 1
7 5 8];
pairs = nchoosek(1:size(A,2), 2)
X = cell2mat(arrayfun(@(i)( A(:, pairs(i,1)) < A(:,pairs(i,2))), 1:3, ...
'UniformOutput', false))
Kategorien
Mehr zu Operators and Elementary Operations finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!