2016-04-18 13 views
1

Ich habe einige Code in Matlab geschrieben, ich habe Matrix A 3 x 3. Wie kann ich die Anzahl der Blöcke A> th, und speichern Sie es in Matlab. Und ich möchte nur einen Wert nächsten Wert "1" erhalten, so dass ich nur 1 Block bekommen sollte, ist [1 2], gibt es etwas falsch in meinem Code? bitte helfen thankyou so vielWie bekomme ich die richtigen Blöcke in Array Matlab

hier ist mein Code

th = 0.1; 
A =[1 0.2 0.03; 0.2 1 0.03; 0.2 0.03 1]; 
index = 0; 

for i = 1:size(A,1) 
    for j = 1:size(A,2) 
     if i == j 
      [i j] = find(A > th) 
      index = index + 1; 
      hasil = [i j]; 
     end 
    end 
end 

Das Ergebnis, wenn ich laufe mein Programm: (1 1), (1 2), (2 1), (2 2), (3 1), (3 3)

+0

Was Loops sollen erreichen? Und Sie sollten Schleifenindizes innerhalb der Schleifen ('i',' j') nicht überschreiben. – David

Antwort

1

ind2sub kann verwendet werden, um den linearen Index in den Index zu konvertieren.

[hasilx,hasily] = ind2sub(size(A), find(A>th)); 
[hasilx hasily] 

ans = 

1  1 
2  1 
3  1 
1  2 
2  2 
3  3 

find können auch zurückkehren Sie direkt die Indizes:

[hasilx,hasily]=find(A>th); 
+1

'[hasilx, hasily] = finde (A> th);' gibt das gleiche Ergebnis. – David

+0

@David Danke, ich habe meine Antwort aktualisiert. – Bernhard

+0

OP tatsächlich verwendet "finden" richtig in ihrer Frage, so dass ich nicht sicher bin, was der Rest ihres Codes tut. – David