MATLAB - tablice
Wszystkie zmienne wszystkich typów danych w MATLAB są tablicami wielowymiarowymi. Wektor to jednowymiarowa tablica, a macierz to dwuwymiarowa tablica.
Omówiliśmy już wektory i macierze. W tym rozdziale omówimy tablice wielowymiarowe. Jednak wcześniej omówimy kilka specjalnych typów tablic.
Specjalne tablice w MATLAB
W tej sekcji omówimy niektóre funkcje, które tworzą specjalne tablice. Dla wszystkich tych funkcji pojedynczy argument tworzy tablicę kwadratową, podwójne argumenty tworzą tablicę prostokątną.
Plik zeros() funkcja tworzy tablicę wszystkich zer -
Na przykład -
zeros(5)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Plik ones() funkcja tworzy tablicę wszystkich jedynek -
Na przykład -
ones(4,3)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans =
1 1 1
1 1 1
1 1 1
1 1 1
Plik eye() funkcja tworzy macierz tożsamości.
Na przykład -
eye(4)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Plik rand() funkcja tworzy tablicę równomiernie rozłożonych liczb losowych na (0,1) -
Na przykład -
rand(3, 5)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
Magiczny kwadrat
ZA magic square jest kwadratem, który daje taką samą sumę, gdy jego elementy są dodawane wierszami, kolumnami lub ukośnie.
Plik magic()funkcja tworzy magiczną tablicę kwadratową. Potrzeba pojedynczego argumentu, który podaje rozmiar kwadratu. Argument musi być wartością skalarną większą lub równą 3.
magic(4)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Tablice wielowymiarowe
Tablica mająca więcej niż dwa wymiary nazywana jest tablicą wielowymiarową w MATLAB. Tablice wielowymiarowe w MATLAB są rozszerzeniem normalnej macierzy dwuwymiarowej.
Generalnie, aby wygenerować tablicę wielowymiarową, najpierw tworzymy tablicę dwuwymiarową i rozszerzamy ją.
Na przykład utwórzmy dwuwymiarową tablicę a.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
a =
7 9 5
6 1 9
4 3 2
Tablica a jest tablicą 3 na 3; możemy dodać trzeci wymiar do a , podając wartości takie jak -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
a =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
1 2 3
4 5 6
7 8 9
Możemy również tworzyć tablice wielowymiarowe za pomocą funkcji jedynek (), zer () lub rand ().
Na przykład,
b = rand(4,3,2)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
b(:,:,1) =
0.0344 0.7952 0.6463
0.4387 0.1869 0.7094
0.3816 0.4898 0.7547
0.7655 0.4456 0.2760
b(:,:,2) =
0.6797 0.4984 0.2238
0.6551 0.9597 0.7513
0.1626 0.3404 0.2551
0.1190 0.5853 0.5060
Możemy również użyć cat()funkcję budowania wielowymiarowych tablic. Łączy listę tablic wzdłuż określonego wymiaru -
Składnia funkcji cat () to -
B = cat(dim, A1, A2...)
Gdzie,
B to nowa utworzona tablica
A1 , A2 , ... to tablice do konkatenacji
dim jest wymiarem, wzdłuż którego mają być łączone tablice
Przykład
Utwórz plik skryptu i wpisz w nim następujący kod -
a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Po uruchomieniu pliku wyświetla się -
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
Funkcje tablicowe
MATLAB udostępnia następujące funkcje do sortowania, obracania, permutacji, zmiany kształtu lub przesuwania zawartości tablicy.
Funkcjonować | Cel, powód |
---|---|
długość | Długość wektora lub największego wymiaru tablicy |
ndims | Liczba wymiarów tablicy |
numel | Liczba elementów tablicy |
rozmiar | Wymiary tablicy |
iscolumn | Określa, czy dane wejściowe są wektorem kolumnowym |
jest pusty | Określa, czy tablica jest pusta |
ismatrix | Określa, czy dane wejściowe to macierz |
isrow | Określa, czy dane wejściowe są wektorem wiersza |
isscalar | Określa, czy dane wejściowe są skalarne |
isvector | Określa, czy dane wejściowe są wektorowe |
blkdiag | Konstruuje blokową macierz przekątną z argumentów wejściowych |
Circshift | Przesuwa tablicę cyklicznie |
ctranspoza | Złożona transpozycja koniugatu |
diag | Macierze diagonalne i przekątne macierzy |
flipdim | Odwraca tablicę wzdłuż określonego wymiaru |
fliplr | Odwraca macierz od lewej do prawej |
flipud | Odwraca macierz z góry na dół |
ipermute | Odwraca permute wymiary tablicy ND |
przestawiać | Przestawia wymiary tablicy ND |
repmat | Replikuje i szyk kafelków |
przefasonować | Zmienia kształt tablicy |
rot90 | Obraca matrycę o 90 stopni |
shiftdim | Przesuwa wymiary |
jest posortowany | Określa, czy elementy zestawu są posortowane |
sortować | Sortuje elementy tablicy w kolejności rosnącej lub malejącej |
sortrows | Sortuje wiersze w kolejności rosnącej |
ściskać | Usuwa pojedyncze wymiary |
transponować | Transponować |
wektoryzować | Wektoryzuje wyrażenie |
Przykłady
Poniższe przykłady ilustrują niektóre z wyżej wymienionych funkcji.
Length, Dimension and Number of elements −
Utwórz plik skryptu i wpisz w nim następujący kod -
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % length of x vector
y = rand(3, 4, 5, 2);
ndims(y) % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % no of elements in s
Po uruchomieniu pliku wyświetla następujący wynik -
ans = 8
ans = 4
ans = 23
Circular Shifting of the Array Elements −
Utwórz plik skryptu i wpisz w nim następujący kod -
a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.
Po uruchomieniu pliku wyświetla następujący wynik -
a =
1 2 3
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
Sortowanie tablic
Utwórz plik skryptu i wpisz w nim następujący kod -
v = [ 23 45 12 9 5 0 19 17] % horizontal vector
sort(v) % sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
Po uruchomieniu pliku wyświetla następujący wynik -
v =
23 45 12 9 5 0 19 17
ans =
0 5 9 12 17 19 23 45
m =
2 6 4
5 3 9
2 0 1
ans =
2 0 1
2 3 4
5 6 9
ans =
2 4 6
3 5 9
0 1 2
Tablica komórek
Macierze komórek to tablice indeksowanych komórek, w których każda komórka może przechowywać tablicę o różnych wymiarach i typach danych.
Plik cellfunkcja służy do tworzenia tablicy komórek. Składnia funkcji komórki to -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Gdzie,
C to tablica komórek;
dim to skalarna liczba całkowita lub wektor liczb całkowitych określający wymiary tablicy komórek C;
dim1, ..., dimN to skalarne liczby całkowite, które określają wymiary C;
obj jest jednym z następujących -
- Tablica lub obiekt Java
- Tablica .NET typu System.String lub System.Object
Przykład
Utwórz plik skryptu i wpisz w nim następujący kod -
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Po uruchomieniu pliku wyświetla następujący wynik -
c =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
[1,3] = Green
[2,3] = 3
[1,4] = Yellow
[2,4] = 4
[1,5] = White
[2,5] = 5
}
Dostęp do danych w tablicach komórek
Istnieją dwa sposoby odwoływania się do elementów tablicy komórek -
- Ujęcie indeksów w pierwszym nawiasie kwadratowym (), aby odwołać się do zestawów komórek
- Ujmij indeksy w nawiasy klamrowe {}, aby odwołać się do danych w poszczególnych komórkach
Gdy umieścisz indeksy w pierwszym nawiasie, oznacza to zbiór komórek.
Indeksy tablic komórek w gładkich nawiasach odnoszą się do zestawów komórek.
Na przykład -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
Możesz również uzyskać dostęp do zawartości komórek, indeksując je za pomocą nawiasów klamrowych.
Na przykład -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB wykona powyższą instrukcję i zwróci następujący wynik -
ans = Blue
ans = Green
ans = Yellow