Compare vector to matrix of unique dimensions

I have a column vector (5000x1) and a matrix (5x3). I want to find the maximum index (ii = 1,2,3) for each element of the vector against each row of the matrix where the vector element is less than or equal to the indexed element. I will end up with a matrix of size (5000x5). If the vector element is greater than all elements in a row, return 3 as the index.
Example with a (6x1) vector and (5x3) matrix:
v = [1 1 2 1 2 3]'; A = [0 1 2
1 2 3
0 0 0
1 1 2
2 3 4];
Output (6x5): B = [2 1 3 1 1
2 1 3 1 1
3 2 3 3 1
2 1 3 1 1
3 2 3 3 1
3 3 3 3 2];

 Respuesta aceptada

xtremecheez
xtremecheez el 8 de Nov. de 2017
For anybody looking at this question in the future:
Using permute as Andrei suggested, the following gives the exact answer as desired (though it could be made more elegant).
P = v <= permute(A,[3 1 2]);
[~,out] = max(c,[],3);
out(sum(P,3)==0) = 3;

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 8 de Nov. de 2017
out = sum(permute(A,[3,1,2]) <= v,3);

1 comentario

xtremecheez
xtremecheez el 8 de Nov. de 2017
Editada: xtremecheez el 8 de Nov. de 2017
I can work with that, thanks. Edit: I unaccepted your answer in favor of my solution that produced exactly what I wanted. You led me there though, hence the upvote.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 8 de Nov. de 2017

Editada:

el 8 de Nov. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by