MATLAB - Matrizes
Todas as variáveis de todos os tipos de dados no MATLAB são arrays multidimensionais. Um vetor é um array unidimensional e uma matriz é um array bidimensional.
Já discutimos vetores e matrizes. Neste capítulo, discutiremos arrays multidimensionais. No entanto, antes disso, vamos discutir alguns tipos especiais de arrays.
Matrizes especiais no 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, argumentos duplos criam uma matriz retangular.
Os zeros() função cria uma matriz de todos os zeros -
Por exemplo -
Demonstração ao vivo
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
Os os() função cria um array de todos os −
Por exemplo -
Demonstração ao vivo
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 olho() A função cria uma matriz identidade.
Por exemplo -
Demonstração ao vivo
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() A função cria uma matriz de números aleatórios uniformemente distribuídos em (0,1) −
Por exemplo -
Demonstração ao vivo
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
Um quadrado mágico é um quadrado que produz a mesma soma, quando seus elementos são somados por linha, coluna ou diagonal.
A mágica() A função cria uma matriz quadrada mágica. Leva um argumento singular que dá o tamanho do quadrado. O argumento deve ser um escalar maior ou igual a 3.
Demonstração ao vivo
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
Um array com mais de duas dimensões é chamado de array multidimensional no MATLAB. Arrays multidimensionais no MATLAB são uma extensão da matriz bidimensional normal.
Geralmente, para gerar um array multidimensional, primeiro criamos um array bidimensional e o estendemos.
Por exemplo, vamos criar um array bidimensional a.
Demonstração ao vivo
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 os valores como -
Demonstração ao vivo
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 ones(), zeros() ou rand().
Por exemplo,
Demonstração ao vivo
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 arrays 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 os arrays a serem concatenados
-
escurecer é a dimensão ao longo da qual concatenar as matrizes
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
Demonstração ao vivo
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 deslocar o conteúdo da matriz.
Função | Propósito |
---|---|
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 |
vazio | Determina se o array está vazio |
ismatrix | Determina se a entrada é matriz |
isrow | Determina se a entrada é um vetor de linha |
isscalar | Determina se a entrada é escalar |
isvetor | Determina se a entrada é vetorial |
blkdiag | Construi matriz diagonal de bloco a partir de argumentos de entrada |
circshift | Desloca a matriz circularmente |
ctranspose | Transposição conjugada complexa |
diag | Matrizes diagonais e diagonais de matriz |
flipdim | Vira a matriz ao longo da dimensão especificada |
fliplr | Vira a matriz da esquerda para a direita |
flipud | Vira a matriz de cima para baixo |
ipermute | Inverte dimensões de permuta da matriz N-D |
permutar | Reorganiza as dimensões da matriz N-D |
repmat | Réplicas e matriz de blocos |
reformar | Reforma a matriz |
rot90 | Gira a matriz 90 graus |
shiftdim | Dimensões dos turnos |
sortido | Determina se os elementos do conjunto estão em ordem de classificação |
classificar | Classifica os elementos do array em ordem crescente ou decrescente |
classificar | Classifica as linhas em ordem crescente |
apertar | Remove dimensões singleton |
transpor | Transpor |
vetorizar | Vetoriza a expressão |
Exemplos
Os exemplos a seguir ilustram algumas das funções mencionadas acima.
Comprimento, Dimensão e Número de elementos −
Crie um arquivo de script e digite o seguinte código nele -
Demonstração ao vivo
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
Deslocamento Circular dos Elementos da Matriz −
Crie um arquivo de script e digite o seguinte código nele -
Demonstração ao vivo
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 -
Demonstração ao vivo
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 onde cada célula pode armazenar uma matriz de diferentes dimensões e tipos de dados.
A célula A funçã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;
-
escurecer é 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 -
- Matriz 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 -
Demonstração ao vivo
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 -
- Colocar os índices no primeiro colchete (), para se referir a conjuntos de células
- Colocar os índices entre chaves {}, para fazer referência aos dados em células individuais
Quando você coloca os índices no primeiro colchete, ele se refere ao conjunto de células.
Índices de matriz de células em parênteses suaves referem-se a conjuntos de células.
Por exemplo -
Demonstração ao vivo
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 -
Demonstração ao vivo
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
MATLAB