abc Matlab - elektronski priručnik II dio Osnove Matlaba kao jezika - 2.4. Indeksiranje
2.4.6. Logičko indeksiranje
Logički vektori kreirani od logičkih i relacionih operacija mogu se upotrijebiti da referenciraju podnizove. Pretpostavimo da je X obična matrica i da je L matrica iste veličine koja je rezultat neke logičke operacije. Tada X(L) specificira elemente od X gdje su elementi od L različiti od nule.
Ova vrsta indeksiranja može se napraviti u jednom koraku specificiranjem logičke operacije kao indeksirajućeg izraza. Pretpostavimo da imamo sljedeći skup podataka:
x = [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8];
NaN je marker za nedostajuću opservaciju, kao napr. neuspjeh da se odgovori na neku stavku iz upitnika. Da bi se uklonio nedostajući podatak logičkim indeksiranjem, koristimo isfinite(x), koja je tačna za sve konačne numeričke vrijednosti i netačna za NaN i Inf:
x = x(isfinite(x))
x =
2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8
Ovde postoji i jedna opservacija, 5.1, koja izgleda da je veoma različita od drugih. To je tzv. stranac (engl. outlier). Sljedeća naredba uklanja strance, u ovom slučaju one elemente koji su više od tri standardne devijacije od srednje vrijednosti (engl. mean):
x = x(abs(x-mean(x)) <= 3*std(x))
x =
2.1 1.7 1.6 1.5 1.9 1.8 1.5 1.8 1.4 2.2 1.6 1.8
Kao drugi primjer, označimo lokacije prostih brojeva u Direrovom magičnom kvadratu koristeći logičko indeksiranje i skalarnu ekspanziju da bismo postavili neproste brojeve na 0.
A(~isprime(A)) = 0
A =
0 3 2 13
5 0 11 0
0 0 7 0
0 0 0 0
Skalarna ekspanzija < Index > Funkcija find
|