Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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:
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.