Finding index of minimum of a subset of an array

2 visualizzazioni (ultimi 30 giorni)
I want to find the index of the greater array for a subset within that array.
Example:
A=[2 3; 1 8; 2 6; 3 1;]
[row, col]=find(min(A([2 4], 2)));
This will compare the numbers 8 and 1, and I want to retrieve the index of A for the value of 1. Instead what this will output now is 2, since the subset being considered is [8 1]. What I want is for [row col] to equal [4 4], because this is the index in A where the minimum of the subset is located.
Any suggestions? Thanks,
  2 Commenti
Alfonso
Alfonso il 1 Mag 2018
I'm not sure if I have understood it correctly, you mean finding the minimum value for each row?
Matt J
Matt J il 1 Mag 2018
What I want is for [row col] to equal [4 4], because this is the index in A where the minimum of the subset is located.
I think you mean [4,2].

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 1 Mag 2018
Modificato: Matt J il 1 Mag 2018
B=A;
subset=false(size(A));
subset([2,4],2)=true;
B(~subset)=inf;
[row,col] = find(B==min(B(:))),

Più risposte (1)

Matt J
Matt J il 1 Mag 2018
Modificato: Matt J il 1 Mag 2018
Another way. This method is probably more efficient if you need to do this repeatedly with a large array A, but small subsets.
subset={[2,4],2}; %example
lookup=reshape(1:numel(A),size(A));
T=lookup(subset{:});
[minval,loc]=min( A(subset{:}) );
[row,col]=ind2sub(size(A), T(loc) )

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by