2017-05-24 2 views
0

J'ai une matrice A logique et j'ai une autre matrice Idx qui représentent l'index de certains points de A. Je voudrais trouver les coordonnées de ces index. Comment puis-je faire ?Comment trouver les coordonnées de l'index?

A=[false false false false false false false false 
false false false false false false false false 
false false false false false false false false 
false false false false false false false false 
true true true true true true true false 
false false false false false false false true 
false false false false false false false false 
false false false false false false false false 
false false false false false false false false 
false false false false false false false false 
false false false false false false false false 
false false false false true false false false 
false false false true false false false false 
false false false true false false false false 
false false true false false false false false 
false false true false false false false false 
false true false false false false false false 
false true false false false false false false 
false true false false false false false false 
true true false false false false false false 
false false true false false false false false] 
idx = [5 20 63 96 153] 
+1

essayer [ 'ind2sub'] (https://www.mathworks.com/help/matlab/ref/ind2sub.html) – user2999345

+0

Il me donne NAN: -/ –

+0

Pouvez-vous fournir un (petit) exemple matrice 'A' et' Idx'? – m7913d

Répondre

1

vous pouvez utiliser ind2sub:

A=[false false false false false false false false; 
    false false false false false false false false; 
    false false false false false false false false; 
    false false false false false false false false; 
    true true true true true true true false; 
    false false false false false false false true; 
    false false false false false false false false; 
    false false false false false false false false; 
    false false false false false false false false; 
    false false false false false false false false; 
    false false false false false false false false; 
    false false false false true false false false; 
    false false false true false false false false; 
    false false false true false false false false; 
    false false true false false false false false; 
    false false true false false false false false; 
    false true false false false false false false; 
    false true false false false false false false; 
    false true false false false false false false; 
    true true false false false false false false; 
    false false true false false false false false]; 
idx = [5 20 63 96 153]; 
[y,x] = ind2sub(size(A),idx) 

qui donne:

x = 

[1  1  3  5  8] 

y = 

[5 20 21 12  6] 
1

Je suppose que vous utilisez

idx = find(A); 

Au lieu de cette utilisation

[row col] = find(A); 
+0

non je ne l'utilise pas trouver pourquoi j'ai eu besoin d'une autre solution ;-) –

+0

alors, ça a marché pour vous? – areify

+0

Oui avec la solution de user2999345 –