Ćw.11 Matlab3
Transkrypt
Ćw.11 Matlab3
Ćw 9. Matlab (3) Instrukcja iteracyjna („pętla liczona”) Pętla pozwala na wielokrotne powtarzanie bloku instrukcji. Liczba powtórzeń wynika z definicji modyfikowanej wartości licznika pętli. for licznik = wartość_pocz:krok:wartość_końcowa, instrukcja, instrukcja, … end Utworzyć m-plik, przetestować i wyjaśnić działanie poniższych przykładów: Przykład 1: Wypełnianie tablicy: for i= 1:1:10, a(i) = 3*i - 1; end; disp(a) Przykład2 : Sumowanie elementów w tablicy jednowymiarowej: clear a; suma = 0; for i= 1:1:10, a(i) = i^2, pause, %zatrzymuje do naciśnięcia dowolnego klawisza suma=suma+a(i); end disp(suma) Przykład 3 : Wypełnianie tablicy dwuwymiarowej – "zagnieżdżenie" iteracji: clear a; for i= 1:1:10, for j = 1:1:10, a(i , j) = round(20*rand()-10); %zastanowić się co wstawiamy do tablicy end end disp(a) Przykład 4 : Sumowanie elementów w tablicy dwuwymiarowej: clear a; suma = 0; for i= 1:1:5, for j = 1:1:5, a(i , j) = 2*i - 4* j, pause, %zatrzymuje do naciśnięcia klawisza suma=suma+a(i , j); end end disp(suma) Przykład 5 Sumowanie elementów wybranej kolumny: clear a; % tu wstawić instrukcje wypełniania tablicy k0=input('Podaj nr kolumny do sumowania:') suma = 0; for w= 1:1:5, suma =suma + a(w, k0); end disp(suma) Ograniczenia pętli wewnętrznej mogą być zależne od licznika pętli zewnętrznej. Wykonać i wyjaśnić poniższy przykład: Przykład 6: clear a; for i= 1:1:5, for j = 1:1:i, a(i , j) = 2*i - 4* j; end end disp(a) Wykonać m-plik i wyjaśnić jego działanie. Zliczanie i sumowanie warunkowe Zliczanie warunkowe (np. policz ile elementów w tablicy jest dodatnich) wymaga zastosowania pętli for, w której dla każdego kroku badamy element tablicy (wykorzystując instrukcję warunkową if). Dla elementów spełniających dany warunek należy wartość pomocniczej zmiennej powiększać o 1. Po zakończeniu pętli wyświetlić wartość zmiennej pomocniczej. Schemat działań: %wcześniej musi być utworzona tablica jednowymiarowa M(N) ile=0; for i=1:N if M(i)>0 ile=ile+1; end end; disp(ile) Sumowanie warunkowe działa podobnie, z tym, że w pętli dla spełnionego warunku zwiększana jest wartość zmiennej sumującej o wartość elementu tablicy: %........tu ustalić postać macierzy suma=0; for i=1:N if M(i)>0 suma=suma+M(i) end end; disp(suma) Zadania 1. Napisać m-plik, w którym zdefiniowana jest dowolna tablica 5x5, (wykorzystać funkcję rand(N), która generuje losowo macierz kwadratową NxN), a następnie obliczana jest suma elementów w 3-ciej kolumnie. 2. Napisać m-plik, w którym zdefiniowana jest dowolna tablica 10x10, następnie obliczana jest suma elementów na przekątnej głównej. 3. Napisać m-plik, w którym zdefiniowana jest dowolna tablica 10x10, następnie obliczana jest suma elementów na przeciwprzekątnej. 4. Napisać m-plik, w którym zdefiniowana jest dowolna tablica 10x10, następnie obliczane jest ile elementów jest dodatnich, a ile ujemnych. 5. Napisać m-plik, w którym zdefiniowana jest dowolna tablica 5x5, następnie obliczana jest suma elementów dodatnich w całej tablicy (zastosować instrukcję warunkową if wewnątrz zagnieżdżanych iteracji for). 6. Opierając się na przykładzie 6, zsumować w tablicy elementy górnego trójkąta w tablicy (do przeciwprzekątnej). 7. Spróbować napisać instrukcje, które odpowiadają na pytania: a. czy element o podawanej przez użytkownika wartości (funkcja input) znajduje się w tablicy b. ile razy ten element występuje.