English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Matrizes do MATLAB

Todos os tipos de dados no MATLAB são variáveis de arrays multidimensionais. Um vetor é um array unidimensional e uma matriz é um array bidimensional.

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

Arrays especiais no MATLAB

Nesta seção, discutiremos algumas funções para criar arrays especiais. Para todos esses recursos, um parâmetro cria um array quadrado, dois parâmetros criam um array retangular.

zeros()A função cria um array completamente zero.-

Por exemplo-

zeros(5)

O MATLAB executará a seguinte sentença 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

ones()A função cria um1do array-

Por exemplo-

ones(4,3)

O MATLAB executará a seguinte sentença e retornará o seguinte resultado-

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

eye()A função cria uma matriz unitária.

Por exemplo-

eye(4)

O MATLAB executará a seguinte sentença e retornará o seguinte resultado-

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

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

Por exemplo-

rand(3, 5)

O MATLAB executará a seguinte sentença 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

魔方

magic square是一个正方形,当其元素按行,列或对角线相加时,会产生相同的和。

magic()函数创建一个魔术方阵。它采用一个单数参数,该参数给出了正方形的大小。参数必须是大于或等于3的标量。

magic(4)

O MATLAB executará a seguinte sentença e retornará o seguinte resultado-

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

多维数组

具有两个以上维的数组在MATLAB中称为多维数组。MATLAB中的多维数组是常规二维矩阵的扩展。

通常,要生成多维数组,我们首先创建一个二维数组并将其扩展。

例如,让我们创建一个二维数组a。

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

O MATLAB executará a seguinte sentença e retornará o seguinte resultado-

a =
   7     9     5
   6     1     9
   4     3     2

数组a是3×3数组;我们可以添加第三维,通过提供类似的价值观-

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

O MATLAB executará a seguinte sentença 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

我们也可以创建一个使用多维数组ones(),zeros()或rand()功能。

例如,

b = rand(4,3,2)

O MATLAB executará a seguinte sentença 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

我们还可以使用cat()函数来构建多维数组。它沿着指定的维度连接一个数组列表-

cat()函数的语法是-

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

在哪里,

  • B是创建的新数组

  • A1A2,...是要串联的数组

  • dim是连接数组所依据的维

Exemplo

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

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

运行文件时,它显示-

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

数组函数

MATLAB提供了以下功能来对数组内容进行排序,旋转,置换,整形或移位。

功能作用
length

向量长度或最大数组维数

ndims数组维数
numel数组元素数
size数组维数
iscolumn

确定输入是否为列向量

isempty确定数组是否为空
ismatrix

确定输入是否为矩阵

isrow确定输入是否为行向量
isscalar确定输入是否为标量
isvector确定输入是否为向量
blkdiag

根据输入参数构造块对角矩阵

circshift循环移位数组
ctranspose复共轭转置
diag对角矩阵和矩阵的对角线
flipdim

沿指定的维度翻转数组

fliplr从左到右翻转矩阵
flipud上下翻转矩阵
ipermute

倒置N-D数组的多维

permute

重新排列N-D数组的多维

repmatcópia e fatiamento de array
reshapereestruturação de array
rot90rotação de matriz90 graus
shiftdimmovimento de dimensão
issorteddeterminar se os elementos do conjunto estão em ordem de classificação
sort

ordenação dos elementos do array em ordem crescente ou decrescente

sortrowsordenação em ordem crescente das linhas
squeezeremoção de dimensão singleton
transposetransposição
vectorizeexpressão vetorializada

Exemplo

O exemplo a seguir ilustra algumas das funcionalidades mencionadas anteriormente.

comprimento, dimensão e quantidade de elementos-

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

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % comprimento do vetor x
y = rand(3, 4, 5, 2);
ndims(y) % número de dimensões no array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % número de elementos em s

Quando você executar o arquivo, ele mostrará o seguinte resultado-

ans =  8
ans =  4
ans =  23

deslocamento circular dos elementos do array

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

a = [1 2 3; 4 5 6; 7 8 9] % array original a
b = circshift(a,1]) % deslocamento circular dos valores da primeira dimensão para baixo 1.
c = circshift(a,[1 -1]) % deslocamento circular dos valores da primeira dimensão para baixo 1 
                           % e valores da segunda dimensão para a esquerda % por 1.

Quando você executar o arquivo, ele mostrará 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

ordenação de array

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

v = [ 23 45 12 9 5 0 19 17] % vetor horizontal
sort(v) % ordenação v
m = [2 6 4; 5 3 9; 2 0 1] % array bidimensional
sort(m, 1) % ordenação m ao longo da linha
sort(m, 2) % ordenação m ao longo da coluna

Quando você executar o arquivo, ele mostrará 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

单元数组

单元格数组是索引单元格的数组,其中每个单元格可以存储不同维度和数据类型的数组。

cell函数用于创建单元格数组。单元格功能的语法是-

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

Descrição

  • Cé um array de células;

  • dimé um inteiro escalar ou vetor inteiro que especifica a dimensão do array de células C;

  • dim1,...,dimNé um inteiro escalar de C dim;

  • objÉ um dos seguintes-

    • Array ou objeto Java

    • Array de tipos .NET System.String ou System.Object

Exemplo

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

c = cell(2, 5);
c = {'Vermelho', 'Azul', 'Verde', 'Amarelo', 'Branco'; 1 2 3 4 5}

Quando você executar o arquivo, ele mostrará o seguinte resultado-

c = 
{
   [1,1] = Vermelho
   [2,1] =  1
   [1,2] = Azul
   [2,2] =  2
   [1,3] = Verde
   [2,3] =  3
   [1,4] = Amarelo
   [2,4] =  4
   [1,5] = Branco
   [2,5] =  5
}

Acessar dados de um array de células

Existem duas maneiras de referenciar os elementos de um array de células-

  • Coloque o índice entre os primeiros colchetes () para referenciar o conjunto de células

  • Coloque o índice entre chaves {} para referenciar os dados de uma célula única

Quando você coloca o índice entre os primeiros parênteses, ele se refere ao conjunto de células.

O índice da matriz de células dentro dos parênteses é o conjunto de células.

Por exemplo-

c = {'Vermelho', 'Azul', 'Verde', 'Amarelo', 'Branco'; 1 2 3 4 5};
c(1:2,1:2)

O MATLAB executará a seguinte sentença e retornará o seguinte resultado-

ans = 
{
   [1,1] = Vermelho
   [2,1] =  1
   [1,2] = Azul
   [2,2] =  2
}

Você também pode usar índices de chaves para acessar o conteúdo das células.

Por exemplo-

c = {'Vermelho', 'Azul', 'Verde', 'Amarelo', 'Branco'; 1 2 3 4 5};
c{1, 2:4}

O MATLAB executará a seguinte sentença e retornará o seguinte resultado-

ans = Azul
ans = Verde
ans = Amarelo