Seltsames Verhalten von find ()

8

Ich habe diese Matrix:

%Vor%

Ich möchte alle 1en finden und sie auf Null setzen.

%Vor%

Warum gibt es immer noch eine 1 in der ersten Reihe?

    
henry 28.11.2016, 13:00
quelle

1 Antwort

7

Wie Sie es tun, erhalten Sie nur den Spaltenindex von 1 , da Sie nur die zweite Ausgabe von find verwenden.

%Vor%

Wenn Sie dies als Index in a verwenden, wird dies als linearer Index behandelt und nur der 1., 2. und 4. Wert in a in 0 geändert. Die lineare Indizierung wird in der Spalten-Haupt-Reihenfolge durchgeführt, so dass dies zu der Ausgabe führt, die Sie sind Sehen.

Um zu tun, was Sie zu tun versuchen, benötigen Sie beide Ausgaben von find , um die Zeilen- und Spaltenindizes zu erhalten, und verwenden dann sub2ind , um diese in einen linearen Index umzuwandeln, den Sie kann dann in a indizieren.

%Vor%

Es ist viel einfacher, die Ausgabeversion von find zu verwenden, die den linearen Index einfach direkt zurückgibt und verwendet.

%Vor%

Oder besser noch, verwenden Sie einfach die logische Indizierung

%Vor%     
Suever 28.11.2016, 13:02
quelle

Tags und Links