abc Matlab - elektronski priručnik
VII dio Dodaci /APPENDIX/ - 7.1. Programiranje u Matlabu 1

7.1.3. Kontrola toka
7.1.3.1. Kontrola toka - Ponavljanje sa for petljama

Ovdje je prikazana sintaksa for petlje

for k = array
         komande
end

Komande između for i end naredbi se izvršavaju za sve vrijednosti spremljene u array.

Pretpostavimo da nam trebaju vrijednosti sinusne funkcije u jedanaest jednako razmaknutih tačaka nπ/10, za n = 0, 1, …, 10. Da bismo generisali ove brojeve možemo koristiti for petlju

for n=0:10
         x(n+1) = sin(pi*n/10);
end

x
x =
         Columns 1 through 7
   0   0.3090      0.5878      0.8090      0.9511      1.0000      0.9511
         Columns 8 through 11
    0.8090    0.5878      0.3090      0.0000

for petlje mogu biti ugniježdene

H = zeros(5);
for k=1:5
         for l=1:5
                  H(k,l) = 1/(k+l-1);

         end
end

for petlje mogu biti ugniježdene

H

H =
      1.0000      0.5000      0.3333      0.2500      0.2000
      0.5000      0.3333      0.2500      0.2000      0.1667
      0.3333      0.2500      0.2000      0.1667      0.1429
      0.2500      0.2000      0.1667      0.1429      0.1250
      0.2000      0.1667      0.1429      0.1250      0.1111

Matrica H kreirana ovdje se naziva Hilbertova matrica. Prva komanda dodjeljuje prostor u memoriji računara za matricu koja će se generisati. Ovo je dodato da bi se redukovao prostor koji zahtijevaju petlje u MATLAB-u.

for petlja se treba koristiti samo ako se druge metode ne mogu primijeniti. Razmotrimo sljedeći problem. Generišimo 10-sa-10 matricu A = [akl], gdje je akl = sin(k)cos(l). Koristeći ugniježdene petlje možemo izračunati unose u matricu A pomoću sljedećeg koda

A = zeros(10);
         for k=1:10
                  for l=1:10
                           A(k,l) = sin(k)*cos(l);
                  end
         end

Slobodna verzija petlje može izgledati kao
k = 1:10;
A = sin(k)'*cos(k);
Prva komanda generiše red niz k koji se sastoji od cijelih brojeva 1, 2, … , 10. Komanda sin(k)' kreira kolonski vektor dok je cos(k) vektor-red. Komponente oba vektora su vrijednosti dve trigonometrijske funkcije evaluirane na k. Gore navedeni kod ilustruje moćno svojstvo MATLAB-a koje se naziva vektorizacija. Ova tehnika se treba koristiti kad god je to moguće.

Kontrola toka    <    Index    >    Kontrola toka - Ponavljanje sa while petljama