Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Obliczenia w Matlabie Tablice

Podobne prezentacje


Prezentacja na temat: "Obliczenia w Matlabie Tablice"— Zapis prezentacji:

1 Obliczenia w Matlabie Tablice
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania

2 Indeksowanie tablic W Matlabie tablice indeksowane są za pomocą nawiasu okrągłego (). Odwołanie się do elementu tablicy jest możliwe na dwa sposoby: podając nr elementu, podając tablicę logiczną. Odwołując się za pomocą nr elementu należy pamiętać, że: indeksy rozpoczynają się od 1 nie od 0, możliwe jest odwołanie się do kilku elementów podając jako indeks wektor. Odwołując się za pomocą tablicy logicznej należy pamiętać, że tablica logiczna musi mieć taki sam rozmiar jak tablica, do elementów której się odwołujemy (w przypadku wektorów oba muszą mieć tą samą długość). Indeksując tablicę pierwszy indeks odnosi się do wiersza, drugi do kolumny.

3 Ostatni element tablicy
Indeksowanie tablic >> a=[10,12,14,16,18] a = >> a(1) ans = 10 >> a(length(a)) 18 >> a(end) >> a([1,3]) ans = >> a(1:3) >> a(1:end-1) >> a(end:-1:1) Długość tablicy Ostatni element tablicy

4 Indeksowanie tablic >> a=[10,12,14,16,18] a = >> w=a>15 w = >> a(w) ans = >> a(a>15) >> a(a==12) ans = 12 >> a(a~=12) >> a(a>10 & a<18) Tablica logiczna

5 Tablice dwuwymiarowe To samo co A(1:end,1)
>> A=[1,2,3;4,5,6;7,8,9] A = >> A(2,1) ans = 4 >> A(1,end) 3 >> A(end,1) 7 >> A(1:2,[1 3]) >> A(1:end,1:2:end) ans = >> A(:,1) >> A(2,:) >> A(1:2,:) 1 2 3 To samo co A(1:end,1) >> A(A(1,:)==2,[1 3]) ans =

6 Tablice wielowymiarowe
>> A=zeros(3,3,3); >> k=1; >> for i=1:3*3 for j=1:3 A(i,j)=k; k=k+1; end >> disp(A) (:,:,1) = (:,:,2) = (:,:,3) = Tablice wielowymiarowe >> A=zeros(3,3); >> for i=1:3*3 A(i)=i; end >> disp(A) >> A=zeros(3,3,3); >> for i=1:3*3*3 A(i)=i; end >> disp(A) (:,:,1) = (:,:,2) = (:,:,3) = >> A=zeros(3,3,3); >> k=1; >> for i=1:3 for j=1:3*3 A(i,j)=k; k=k+1; end >> disp(A) (:,:,1) = (:,:,2) = (:,:,3) = Do elementów tablic wielowymiarowych można odnosić się mniejszą liczbą indeksów Pierwszy indeks odnosi się do wiersza, drugi do pozostałych wymiarów.

7 Tworzenie macierzy i wektorów
>> A=zeros(2,3) A = >> B=zeros(3) B = >> C=ones(1,4) C = >> D=eye(3) D = >> E=eye(2,4) E = F=diag(5) F = 5 >> G=diag(1:4) G = >> H=true(1,3) H = >> I=false(2,1) I = 0 >> J=rand(2,3) J = >> K=randn(1,4) K = >> L=randi(5,1,5) L = >> M=randperm(10) M = >> N=linspace(0,1,6) N = >> O=logspace(0,3,4) O =

8 Łączenie macierzy i wektorów
>> A=[1,2;3,4] A = >> x=[10;11] x = >> B=[A,x] B = >> y=[20,21,22] y = >> C=[B;y] C = >> A=[1,2;3,4] A = >> B=[5,6;7,8] B = >> horzcat(A,B) ans = >> vertcat(A,B) >> cat(1,A,B) ans = >> cat(2,A,B) >> cat(3,A,B) ans(:,:,1) = ans(:,:,2) = horzcat (vertcat) – łączy elementy w poziomie (pionie), to samo co [A,B] ([A;B]) Cat – łączy elementy w wybranym kierunku

9 Łączenie macierzy i wektorów
>> A=[1,2;3,4] A = >> repmat(A,2,1) ans = >> repmat(A,1,2) >> repmat(A,2) >> repmat(A,[2,2,2]) ans(:,:,1) = ans(:,:,2) = >> repmat(A,[2,2,2,2]) ans(:,:,1,1) = ans(:,:,2,1) = ans(:,:,1,2) = ans(:,:,2,2) = repmat – zwielokrotnia tablicę wzdłuż określonego wymiaru

10 Łączenie macierzy i wektorów
>> A=[1,2;3,4] A = >> B=5 B = 5 >> C=randi(10,3) C = >> D=blkdiag(A,B,C) D =

11 Wymiary macierzy >> A=[1,2,3;4,5,6] A = >> x=[1,3,5,7] x = >> length(x) ans = 4 >> length(A) 3 >> length(A.') >> size(x) ans = >> size(A) >> size(A,1) 2 >> size(A,2) 3 >> numel(x) ans = 4 >> numel(A) 6 >> ndims(x) 2 >> ndims(A) >> a=5 a = 5 >> ndims(a) >> size(a) numel – liczba elementów tablicy ndims – liczba wymiarów tablicy (skalar, wektor i macierz mają po dwa wymiary) length – długość wektora, najdłuższy bok tablicy size – wymiary tablicy

12 Obroty macierzy >> A=[1,2,3;4,5,6;7,8,9] A = >> fliplr(A) ans = >> flipud(A) >> flipdim(A,1) >> flipdim(A,2) ans = >> rot90(A) >> rot90(A,2) >> rot90(A,3) >> reshape(A,1,9) ans = >> reshape(A,9,1) 1 4 7 2 5 8 3 6 9

13 Pozycja wartości minimalnej
min, max >> x=randi(10,1,5) x = >> a=min(x) a = 1 >> [a,b]=min(x) b = 5 >> c=max(x) c = 10 >> [c,d]=max(x) d = 4 Wartość minimalna Pozycja wartości minimalnej

14 min, max >> x=randi(10,1,5) x = >> y=5 y = 5 >> a=min(x,y) a = >> x=randi(10,1,5) x = >> y=randi(10,1,5) y = >> b=min(x,y) b =

15 >> c=min(min(A)) c = 14
min, max >> A=randi(100,4,4) A = >> a=min(A) a = >> [a,b]=min(A) b = >> c=min(min(A)) c = 14 Wartość minimalna z każdej kolumny Pozycja wartości minimalnej w każdej kolumnie

16 min, max >> A=randi(100,4,4) A = >> [a,b]=min(A,[],1) a = b = >> [a,b]=min(A,[],2) a = 3 9 27 23 b = 4 1 Wartość minimalna z każdego wiersza Wartość minimalna z każdej kolumny

17 min, max Wartość minimalna z każdego wiersza >> A=randi(100,2,2,2) A(:,:,1) = A(:,:,2) = >> min(A) ans(:,:,1) = ans(:,:,2) = 39 25 >> min(A,[],2) ans(:,:,1) = ans(:,:,2) = >> min(A,[],3) ans = Wartość minimalna z każdej płaszczyzny Wartość minimalna z każdej kolumny

18 mean, sum, prod >> x=randi(10,1,5) x = >> mean(x) ans = >> sum(x) 18 >> prod(x) 108 >> A=randi(10,3,3) A = >> mean(A) ans = >> mean(A,2) Wartości średnie z każdej kolumny Średnia arytmetyczna Suma Wartości średnie z każdego wiersza Iloczyn

19 sort >> x=randi(100,1,5) x = >> a=sort(x) a = >> a=sort(x,'descend') >> [a,b]=sort(x) b = Posortowany wektor x Pozycje na których znajdowały się poszczególne elementy przed sortowaniem

20 Każda kolumna sortowana jest oddzielnie
>> A=randi(100,3,3) A = >> a=sort(A) a = >> [a,b]=sort(A) a = b = Każda kolumna sortowana jest oddzielnie

21 sort >> A=randi(100,3,3) A = >> a=sort(A,2) a = >> [a,b]=sort(A,2) a = b = Sortowanie wierszy

22 Indeksy elementów spełniających warunek
find >> x=randi(100,1,10) x = >> x<50 ans = >> x(x<50) >> find(x<50) Indeksy elementów spełniających warunek

23 find >> x=randi(100,1,10) x = >> find(x<50,3) ans = >> find(x<50,3,'last') 6 7 8 3 pierwsze indeksy elementów spełniających warunek 3 ostatnie indeksy elementów spełniających warunek

24 find >> A=randi(10,4,4) A = >> A>7 ans = >> A(A>7) >> find(A>7) ans = >> [a,b]=find(A>7) a = b = 3 >> [a,b,c]=find(A>7) a = 1 4 2 b = 3 c = Pojedynczy indeks Numer wiersza Numer kolumny Prawdziwe wartości

25 Numer kolumny i płaszczyzny
find >> A=randi(10,3,3,3) A(:,:,1) = A(:,:,2) = A(:,:,3) = >> find(A>8) ans = >> [a,b]=find(A>8) a = 1 2 3 b = 6 8 9 Numer wiersza Numer kolumny i płaszczyzny Pojedynczy indeks

26 Tablice komórkowe W przeciwieństwie do zwykłych tablic, każdy element tablicy komórkowej może być innego typu. Tworzymy je używając nawiasów {} zamiast []. >> tab={1, [1 2 3], [4;5;6], 'AGH'} tab = [1] [1x3 double] [3x1 double] 'AGH‘ >> tab1=cell(1,3) tab1 = [] [] []

27 Tablice komórkowe >> tab={1, [1 2 3], [4;5;6], 'AGH'}; >> tab{1} ans = 1 >> tab{2} >> tab{3} >> tab{4} AGH >> tab(1) ans = [1] >> tab(2) [1x3 double] >> tab(3) [3x1 double] >> tab(4) 'AGH' Komórka o wymiarach 1x1 To, co jest w komórce

28 Tablice komórkowe >> A=[1,2;3,4] A = >> B={A} B = [2x2 double] >> C=num2cell(A) C = [1] [2] [3] [4] >> D=cell2mat(B) D = >> E=cell2mat(C) E = >> who Your variables are: A B C D E Komórka 1x1 zawierająca tablicę 2x2 Tablica komórek 2x2 zawierająca liczby >> whos Name Size Bytes Class Attributes A x double B x cell C x cell D x double E x double 4*8=32 112+4*8=144 4*112+4*8=480

29 Tablice komórkowe >> A={[1,2,3;4,5,6];[7,8;9,0]} A = [2x3 double] [2x2 double] >> A{1} ans = >> A{2} >> A{1}(1,:) ans = >> A{1}(A{2}(2,:)<5,:) 4 5 6

30 Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie:


Pobierz ppt "Obliczenia w Matlabie Tablice"

Podobne prezentacje


Reklamy Google