English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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是创建的新数组
A1,A2,...是要串联的数组
dim是连接数组所依据的维
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数组的多维 |
repmat | cópia e fatiamento de array |
reshape | reestruturação de array |
rot90 | rotação de matriz90 graus |
shiftdim | movimento de dimensão |
issorted | determinar se os elementos do conjunto estão em ordem de classificação |
sort | ordenação dos elementos do array em ordem crescente ou decrescente |
sortrows | ordenação em ordem crescente das linhas |
squeeze | remoção de dimensão singleton |
transpose | transposição |
vectorize | expressão vetorializada |
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
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)
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
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 }
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