location of element in matrix
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
jano satti
le 25 Avr 2017
Modifié(e) : Andrei Bobrov
le 25 Avr 2017
I have a matrix mat and I want to find location of x in mat matrix.location should be in order of x.
mat =[
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
0.0099 1.0000 1.0000 0.0120 1.0000 0.0115
0.0093 1.0000 1.0000 0.0120 1.0000 0.0070
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
0.0098 1.0000 1.0000 0.0089 1.0000 0.0093
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000];
x =[
0.0089
0.0099
0.0070];
A =mat
C=x
numbersInA = unique(C)
numbersInC = unique(C)
for k = 1 : length(numbersInA)
[rowA colA] = find(A==numbersInC(k))
w(k,:)= [rowA , colA]
end
ans is [ 3 6]
[5 4]
[2 1]
but I need this solution::
[5 4]
[2 1]
[3 6]
Thanks in advance.
1 commentaire
Réponse acceptée
Andrei Bobrov
le 25 Avr 2017
Modifié(e) : Andrei Bobrov
le 25 Avr 2017
[l0,ii] = ismembertol(mat(:),x);
[i0,j0] = ind2sub(size(mat),find(l0));
[~,i1] = sort(ii(l0));
out = [i0,j0];
out = out(i1,:);
0 commentaires
Plus de réponses (2)
Stephen23
le 25 Avr 2017
Do NOT use ismember
Those are floating point values. It would be an extremely bad idea to use ismember on floating point values, because ismember tests for equivalence of the values. Really bad idea:
Those values should be compared using a tolerance, or with ismembertol.
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!