A compact way to find elements of an array which are greater, equal, or less than the elements of a second array
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sim
el 20 de En. de 2022
Comentada: Star Strider
el 20 de En. de 2022
Hi, I have two arrays a1 and a2 and I would like to get a third array b which indicates me which elements of a1 are greater, equal or less than the elements of a2. I would indicate the elements of b with 1, 0 and -1 if the elements of a1 are greater, equal or less than the elements of a2, respectively.
% input
a1 = [0 4 7 8 1 2 3]';
a2 = [4 4 6 9 9 1 1]';
% method
b = (a1>a2);
b = double(b);
b(b==0) = -1; % assign "-1" to the elements of a1 which are less than the elements of a2
c = (a1==a2);
b(find(c==1)) = 0 % assign "0" to the elements of a1 which are equal to the elements of a2
% output
b =
-1
0
1
-1
-1
1
1
Is there any, better/more compact way, maybe in a couple of lines of code to get the same result?
0 comentarios
Respuesta aceptada
Más respuestas (1)
Star Strider
el 20 de En. de 2022
To check all the elements against each other —
a1 = [0 4 7 8 1 2 3]';
a2 = [4 4 6 9 9 1 1]';
Check = sign(a1 - a2.') % R2016b & Later Releases
Check = bsxfun(@(a1,a2)sign(a1-a2), a1, a2.') % All Releases
.
2 comentarios
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!