MATLAB - Matrizes

Todas as variáveis ​​de todos os tipos de dados no MATLAB são matrizes multidimensionais. Um vetor é uma matriz unidimensional e uma matriz é uma matriz bidimensional.

Já discutimos vetores e matrizes. Neste capítulo, discutiremos matrizes multidimensionais. No entanto, antes disso, vamos discutir alguns tipos especiais de arrays.

Matrizes especiais em MATLAB

Nesta seção, discutiremos algumas funções que criam alguns arrays especiais. Para todas essas funções, um único argumento cria uma matriz quadrada, os argumentos duplos criam uma matriz retangular.

o zeros() função cria uma matriz de todos os zeros -

Por exemplo -

zeros(5)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

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

o ones() função cria uma matriz de todos -

Por exemplo -

ones(4,3)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
      1     1     1
      1     1     1
      1     1     1
      1     1     1

o eye() função cria uma matriz de identidade.

Por exemplo -

eye(4)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
      1     0     0     0
      0     1     0     0
      0     0     1     0
      0     0     0     1

o rand() função cria uma matriz de números aleatórios uniformemente distribuídos em (0,1) -

Por exemplo -

rand(3, 5)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

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

Um quadrado mágico

UMA magic square é um quadrado que produz a mesma soma, quando seus elementos são somados em linha, coluna ou diagonal.

o magic()função cria uma matriz quadrada mágica. É necessário um argumento singular que fornece o tamanho do quadrado. O argumento deve ser um escalar maior ou igual a 3.

magic(4)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
   16     2     3    13
   5    11    10     8
   9     7     6    12
   4    14    15     1

Matrizes multidimensionais

Uma matriz com mais de duas dimensões é chamada de matriz multidimensional no MATLAB. As matrizes multidimensionais no MATLAB são uma extensão da matriz bidimensional normal.

Geralmente, para gerar uma matriz multidimensional, primeiro criamos uma matriz bidimensional e a estendemos.

Por exemplo, vamos criar um array bidimensional a.

a = [7 9 5; 6 1 9; 4 3 2]

O MATLAB executará a instrução acima e retornará o seguinte resultado -

a =
   7     9     5
   6     1     9
   4     3     2

A matriz a é uma matriz de 3 por 3; podemos adicionar uma terceira dimensão a a , fornecendo valores como -

a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

O MATLAB executará a instrução acima e retornará o seguinte resultado -

a =

ans(:,:,1) =

   0   0   0
   0   0   0
   0   0   0

ans(:,:,2) =

   1   2   3
   4   5   6
   7   8   9

Também podemos criar arrays multidimensionais usando as funções uns (), zeros () ou rand ().

Por exemplo,

b = rand(4,3,2)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

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

Também podemos usar o cat()função para construir arrays multidimensionais. Ele concatena uma lista de matrizes ao longo de uma dimensão especificada -

A sintaxe para a função cat () é -

B = cat(dim, A1, A2...)

Onde,

  • B é a nova matriz criada

  • A1 , A2 , ... são as matrizes a serem concatenadas

  • dim é a dimensão ao longo da qual concatenar as matrizes

Exemplo

Crie um arquivo de script e digite o seguinte código nele -

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])

Quando você executa o arquivo, ele exibe -

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

Funções de matriz

O MATLAB fornece as seguintes funções para classificar, girar, permutar, remodelar ou mudar o conteúdo da matriz.

Função Objetivo
comprimento Comprimento do vetor ou maior dimensão da matriz
ndims Número de dimensões da matriz
numel Número de elementos da matriz
Tamanho Dimensões da matriz
iscolumn Determina se a entrada é um vetor de coluna
está vazia Determina se a matriz está vazia
ismatriz Determina se a entrada é uma matriz
Isrow Determina se a entrada é um vetor linha
isscalar Determina se a entrada é escalar
isvetor Determina se a entrada é um vetor
blkdiag Constrói matriz diagonal de bloco a partir de argumentos de entrada
circshift Muda a matriz circularmente
transpor Transposição de conjugado complexo
diag Matrizes diagonais e diagonais da matriz
flipdim Inverte a matriz ao longo da dimensão especificada
fliplr Inverte a matriz da esquerda para a direita
flipud Inverte a matriz de cima para baixo
ipermute Inversa as dimensões de permuta da matriz ND
permutar Reorganiza as dimensões da matriz ND
repmat Replicações e matriz de blocos
remodelar Remodela a matriz
rot90 Roda a matriz 90 graus
shiftdim Dimensões de deslocamento
ordenado Determina se os elementos do conjunto estão em ordem de classificação
ordenar Classifica os elementos da matriz em ordem crescente ou decrescente
sortrows Classifica as linhas em ordem crescente
aperto Remove dimensões singleton
transpor Transpor
vetorizar Vectoriza a expressão

Exemplos

Os exemplos a seguir ilustram algumas das funções mencionadas acima.

Length, Dimension and Number of elements −

Crie um arquivo de script e digite o seguinte código nele -

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

Quando você executa o arquivo, ele exibe o seguinte resultado -

ans =  8
ans =  4
ans =  23

Circular Shifting of the Array Elements −

Crie um arquivo de script e digite o seguinte código nele -

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.

Quando você executa o arquivo, ele exibe o seguinte resultado -

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

Classificando matrizes

Crie um arquivo de script e digite o seguinte código nele -

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

Quando você executa o arquivo, ele exibe o seguinte resultado -

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

Matriz de Células

Matrizes de células são matrizes de células indexadas em que cada célula pode armazenar uma matriz de dimensões e tipos de dados diferentes.

o cellfunção é usada para criar uma matriz de células. A sintaxe para a função da célula é -

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

Onde,

  • C é a matriz de células;

  • dim é um inteiro escalar ou vetor de inteiros que especifica as dimensões da matriz de células C;

  • dim1, ..., dimN são inteiros escalares que especificam as dimensões de C;

  • obj é um dos seguintes -

    • Array ou objeto Java
    • Matriz .NET do tipo System.String ou System.Object

Exemplo

Crie um arquivo de script e digite o seguinte código nele -

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

Quando você executa o arquivo, ele exibe o seguinte resultado -

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
}

Acessando dados em matrizes de células

Existem duas maneiras de se referir aos elementos de uma matriz de células -

  • Incluindo os índices no primeiro colchete (), para se referir a conjuntos de células
  • Colocando os índices entre colchetes {}, para se referir aos dados dentro das células individuais

Quando você coloca os índices no primeiro colchete, ele se refere ao conjunto de células.

Os índices de matriz de células entre parênteses suaves referem-se a conjuntos de células.

Por exemplo -

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans = 
{
   [1,1] = Red
   [2,1] =  1
   [1,2] = Blue
   [2,2] =  2
}

Você também pode acessar o conteúdo das células indexando com chaves.

Por exemplo -

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans = Blue
ans = Green
ans = Yellow