1 / 33

Matlab Tablice i ich zastosowania Wykresy Iteracja

MOiPP. Wykład 2. Matlab Tablice i ich zastosowania Wykresy Iteracja. TABLICE. Tworzenie tablicy wektor wierszowy M1=[ 1 2 3 4 5 ] lub M1=[1, 2, 3, 4, 5] wektor kolumnowy M2 =[ 1; 2; 3; 4; 5] tablica dwuwymiarowa M3 = [1 2 3; 2 1 1 ; 1 0 0 ].

laszlo
Télécharger la présentation

Matlab Tablice i ich zastosowania Wykresy Iteracja

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MOiPP Wykład 2 • Matlab • Tablice i ich zastosowania • Wykresy • Iteracja

  2. TABLICE Tworzenie tablicy wektor wierszowy M1=[1 2 3 4 5] lub M1=[1, 2, 3, 4, 5] wektor kolumnowy M2=[1; 2; 3; 4; 5] tablica dwuwymiarowa M3 = [1 2 3; 2 1 1; 1 0 0]

  3. Metoda generowania tablicy o elementach ciągu arytmetycznego x=0:2:10 %generowanie wektora od 0 do 10 co 2 % wart_pocz:krok:wart_koncowa x= 0:0.1:2 %dozwolona wartość dziesiętna kroku Można pominąć krok: x=0:10 %generowanie wektora od 0 do 10 co 1 % wart_pocz:wart_koncowa

  4. Podobnie w tablicach wielowymiarowych M = [0:5 ; 10:15] %wartość początkowa: wartość końcowa (krok=1) ale UWAGA! M = [0:5; 10:17] błąd argumentsdimensionsare not consistent NIE ZGADZAJĄ SIĘ WYMIARY!

  5. Można wygenerować tablicę z wartościami funkcji: x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa M=[x; sind(x)] x= [1 :10] M=[x; log(x)]

  6. Dostęp do elementu tablicy M1=[ 1 3 5 -11 7] disp(M1(3)) wyświetlony zostanie trzeci element tablicy tablica dwuwymiarowa M2 = [1 2 3; 2 1 1.5; 1 0 0] disp(M2(2,3)) Można elementy zdefiniowanej tablicy wykorzystać w wyrażeniach, np: y= M(2,2)^2

  7. Operacje na tablicach (macierzach) m4=[1 2 34 6;6 8/2 4 -2; 2 -5 56 6; 6 72 0.2 12] m4t = m4' %macierz sprzężona – transponowanam4o = m4^-1 %macierz odwrotna (macierz kwadratowa!) mo= inv(m)% także obliczenie macierzy odwrotnej! s=m4*m4o %sprawdzenie - macierz jednostkowaw=det(m4) %wyznacznik,uwaga:macierz kwadratowa!

  8. Operatory "kropkowe" dla tablic jeśli A i B są tablicami C=A*B to iloczyn macierzowy – kiedy dozwolony? - gdy macierz A ma tyle kolumn ile macierz B wierszy D=A.*B to iloczyn elementowy – każdy element macierzy D powstaje z iloczynu odpowiednich elementów macierzy A i B – dozwolony gdy A i B mają te same rozmiary podobnie ./ .^ (dzielenie i potęgowanie elementowe) A^2 % tożsame z A*A (uwaga:A musi być kwadratowa) A.^2 % każdy element do kwadratu – A dowolne

  9. Proste przykłady operacji macierzowych: * = sumy iloczynów .* = ./ = .^ =

  10. Wybrane metody wykorzystania tablic Rozwiązywanie układu równań liniowych 2x + 3y – 4z = 5 x + y – z = 3,5 –2,5y – z = 2 Rozwiązanie w Matlabie (m-plik): A = [2 3 -4 ; 1 1 -1 ; 0-2.5 -1] B = [ 5 ; 3.5 ; 2] X= A^(-1)*B wektor rozwiązań A*X % wynikiem powinien być wektor wyrazów wolnych B

  11. …sprawdzenie rozwiązań: s1=A(1,1)*X(1)+ A(1,2)*X(2)+A(1,3)*X(3)-B(1) …. powinno dać wartość s1=0 podobnie: s2=A(2,1)*X(1)+ A(2,2)*X(2)+A(2,3)*X(3)-B(2) s3=A(3,1)*X(1)+ A(3,2)*X(2)+A(3,3)*X(3)-B(3) Uwaga: Rozwiązania istnieją jeśli równania układu nie są liniowo zależne

  12. Wyznaczanie pierwiastków równania n-tego stopnia funkcja roots(M) - gdzie M jest wektorem współczynników przy kolejnych potęgach np. x3 + 3x2 –4=0 instrukcja: R=roots([1 3 0 -4]) wyznacza pierwiastki równania R – będzie wektorem rozwiązań - jeśli równanie rzędu N to mamy N rozwiązań - rozwiązaniami mogą być liczby zespolone!

  13. Użyteczne funkcje tablicowe rand(n) - losowo generowana tablica kwadratowa nxn rand(n,m) - losowo generowana tablica kwadratowa nxm sum (A) - wektor sum elementów w kolumnach macierzy A sum(sum(A)) - suma wszystkich elementów macierzy 2-wymiarowej max(A) - wektor elementów maksymalnych w kolumnach max(max(A)) - element największy w macierzy dwuwymiarowej min(A) - wektor elementów minimalnych w kolumnach macierzy A min(min(A)) - element najmniejszy w macierzy dwuwymiarowej ndims(A) - ile wymiarów macierzy numel(A) - liczba elementów macierzy reshape(A,n,m) - rekonfiguracja macierzy size(A) - rozmiar macierzy length(A) - największy rozmiar

  14. sort (A, i, typ) - sortowanie i: 1 - kolumny lub 2 - wiersze typ: 'ascend' 'descend' domyślne wartości: 1 i 'ascend' m = 3 5 8 10 8 7 10 3 5 3 7 3 5 1 8 2 6 7 1 2 1 2 9 3 9 sortowanie kolumnami m1 = 1 2 3 1 2 2 3 5 1 3 3 5 7 3 8 7 6 8 5 8 7 10 9 10 9 sortowanie wierszami m2 = 3 5 8 8 10 3 3 5 7 10 1 3 5 7 8 1 2 2 6 7 1 2 3 9 9 sortowanie wierszami malejąco m3 = 10 8 8 5 3 10 7 5 3 3 8 7 5 3 1 7 6 2 2 1 9 9 3 2 1 clc m=round(10*rand(5)) disp('sortowanie kolumnami') m1=sort(m,1) disp('sortowanie wierszami') m2=sort(m,2) disp('sortowanie wierszami malejąco') m3=sort(m,2,'descend')

  15. Przykład >> M=rand(3) M = 0.3404 0.7513 0.6991 0.5853 0.2551 0.8909 0.2238 0.5060 0.9593 >> size(M) ans = 3 3 >>

  16. Możliwe jest także tworzenie tzw. tablic komórkowych (struktur) >>A = {[1 8 5], 'Jakiś tekst'; 2+4i, 1:2:7} A = [1x3 double] 'Jakiś tekst' [2.0000 + 4.0000i] [1x4 double] >> T= A{1} % pierwsza składowa tablicy A T = 1 8 5 Po co? Umożliwiają umieszczenie różnych typów danych w komórkach (tablice heterogeniczne) – teksty, dane liczbowe, tablice

  17. WYKRESY 2-wymiarowe 1 sposób: Funkcja plot Wymaga utworzenia dwóch wektorów o tej samej liczbie elementów x=0:10 %generowanie wektora co 1 % wart_pocz:wart_koncowa y=[5.1 1.1 -2 -3 4.2 5.5 4.3 3.1 4.5 5.9 4.9] z=[0 2 3 3 5 4 3 4 5 4 9] %trzeci wektor title('wykres') %dodanie tytułu plot(x,y) %rysowanie wykresu plot(x,y,'r',x , z,'k')%r – red k- black

  18. Przykłady wykresów funkcji x=0:90%generowanie wektora co 1 y=sin(pi*x/180) %wektor y plot(x,y) ,grid %wykres z siatką x=0:pi/50:6*pi y=cos(2*x)./sqrt(x+1) plot(x,y) Uwaga: zapis kropkowy elementowe dzielenie(mnożenie wektorów) x = - 9:1:9 z = x.^2 plot(x, z)

  19. 2 sposób: Funkcjafplot Wykres funkcji podanej jako parametr tekstowy jedna krzywa: fplot('sin(x*x)/x',[0 4*pi]) punkt dzielenia przez 0 nie jest rysowany - ostrzeżenie dwie krzywe: fplot('[sin(x*x)/x cos(x)]',[0.01 4*pi]) Uwaga: zamiast x można użyć innej, dowolnej nazwy zmiennej niezależnej

  20. Wykresy 3D Krzywe 3D Wykorzystujemy funkcję plot3(y,z,x) Przykładowo dla krzywej (helisy) danej równaniami: y=sin(x) z=cos(x) Tworzymy m-plik: x= 0:pi/50:10*pi; plot3(sin(x),cos(x),x);

  21. Wykresy powierzchniowe (3D) • Korzystamy z funkcji mesh(x,y,z) Przykład: Mamy powierzchnię podaną równaniem: z=cos3x siny

  22. Piszemy m-plik: • clear • y = 0:0.01:pi %wektor wierszowy • x = y' %wektor kolumnowy! • z=cos(3*x) * sin(y) % tablica z jestkwadratowa • mesh(x, y, z) rezultat mnożenia dwóch wektorów: * sin y cos3x

  23. Przykładowe funkcje rysujące standardowe wykresy powierzchniowe 3D peaks cylider(średnica) sphere (precyzja)

  24. Obsługa plików • Zapis całej tablicy do pliku ASCII i odczyt z pliku clear c = [8 6 4 2;4 -1 4 5] save ('mydata.dat', 'c','-ASCII') clear load ('mydata.dat') disp('Dane z pliku:'); mydata

  25. Zapis danych do pliku typu mati odczyt z pliku a=rand(3); b=6; save ('plik.mat', 'a', 'b'); clear a clear b load ('plik.mat') disp(a) disp(b)

  26. Można też tak zapisać tablicę w pliku nazwa pliku typ:zapis (write) x = 0: 0.1:1; y = [x; exp(x)]; file_id= fopen('tab.txt','wt'); fprintf(file_id,'%6.2f %10.8f \n',x, y); fclose(file_id); zamknięcie pliku 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183 zawartość pliku tab.txt

  27. Instrukcja iteracyjna („pętla liczona”) Schemat iteracji: forzmienna = wartość_pocz: krok:wartość_końcowa instrukcja instrukcja …. end blok instrukcji powtarzanych Jeśli pominięty krok to krok=1

  28. Przykłady prostych "pętli": clc fori= 1:10, disp('jakiś tekst') end; clear fori= 1:1:10, a(i) = i; %element tablicy disp(a) pause end;

  29. Przykład ("zagnieżdżanie" iteracji): for i= 1:10, for j = 1:10, a(i , j) = i*j end end

  30. Przykład (uzależnienie licznika "pętli wewnętrznej): for i= 1:5, for j = 1:i, a(i , j) = i*j; end end disp(a) 1 0 000 2 4 0 00 3 6 9 0 0 4 8 12 16 0 5 10 15 20 25

  31. Przykład (sumowanie elementów w tablicy dwuwymiarowej): a=0; suma = 0; for i= 1:5, for j = 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)

  32. Przykład (zliczanie elementów dodatnich w tablicy dwuwymiarowej): clear; clc a=rand(5,5)-0.5 %elementy dodatnie i ujemne iledod= 0; for i= 1:1:5, for j = 1:1:5, if a(i , j)>0 iledod=iledod+1; end end end disp(iledod)

  33. Przykład a=rand(5) disp('Oto 3-ci wiersz') fork= 1:1:5, disp(a(3, k)) end disp('Oto przekątna') for k= 1:1:5, disp(a(k, k)) end

More Related