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