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