%                           Lecture 13
%                             find

% Syntax
% 
% k = find(x)
% [i,j] = find(X)
% [i,j,v] = find(X)

% findet die Indizes der von Null verschiedenen Elemente von x(:), bzw.
% deren Zeilen- Spaltenindex, und gibt die Werte in v aus

x = [11  0  33  0  55];
find(x)
x = [11  0  33  0  55]';
find(x)


x=[ -1 0 2 3;0 1 4 0]
k = find(x)
[i,j] = find(x)
[i,j,v] = find(x)

% Erinnerung: relationale Operatoren wirken elementweise

z = x >=2

% das Resultat z ist ein logisches Feld mit der Größe von x, eine 1 steht
% an jenen Positionen, an denen die Bedingung x >=2 zutrifft, Null sonst

whos

% logische Felder können zurn Indizierung verwendet werden:

y = x(z)

% gleichwertig mit

y = x(x>=2)

% aber: logische Felder können i.A.nicht Argument math. Funktionen sein

sin(z)

% es genügt jedoch eine Null zu addieren, um ein double pecision Feld zu
% erhalten

sin(z+0)

% Achtung: diese Art der Indizierung funktioniert nur mit Feldern welche
% Ergebnis einer logische Operation sind

z1 =[0 0 1 1;0 0 1 0];
x(z1)

% Kombination mit find:

% Was ist das Ergebnis von
find(x>0&x<=3)

% Was ist das Ergebnis von
[i,j,v] = find(x~=0)