2017-05-24 4 views
0

Ich habe eine Matrix A logisch und ich habe eine andere Matrix Idx, die Index bestimmter Punkte von A darstellen. Ich möchte Koordinaten dieses Indexes finden. Wie kann ich ?Wie finden Sie Koordinaten des 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

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

+0

Es gibt mir NAN: -/ –

+0

Können Sie eine (kleine) Beispiel Matrix für 'A' und' Idx'? – m7913d

Antwort

1

Sie können ind2sub verwenden:

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) 

die gibt:

x = 

[1  1  3  5  8] 

y = 

[5 20 21 12  6] 
1

Ich nehme an, Sie verwenden

idx = find(A); 

Anstelle dieser Verwendung

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

nein, ich benutze nicht finden, warum ich eine andere Lösung brauchte ;-) –

+0

also, es hat dir funktioniert? – areify

+0

Yep mit User2999345's Lösung –

Verwandte Themen