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

MATLAB 配列

MATLAB中所有数据类型的所有变量都是多维数组。向量是一维数组,矩阵是二维数组。

我们已经讨论了向量和矩阵。在本章中,我们将讨论多维数组。但是,在此之前,让我们讨论一些特殊类型的数组。

MATLAB中的特殊数组

在本节中,我们将讨论一些创建特殊数组的函数。对于所有这些功能,一个参数创建一个正方形数组,双参数创建一个矩形数组。

zeros()函数创建一个全零的数组-

たとえば-

zeros(5)

MATLABは上記の命令を実行し、以下の結果を返します-

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()函数创建一个全1的数组-

たとえば-

ones(4,3)

MATLABは上記の命令を実行し、以下の結果を返します-

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

eye()函数创建一个单位矩阵。

たとえば-

eye(4)

MATLABは上記の命令を実行し、以下の結果を返します-

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

rand()函数在(0,1)上创建一个均匀分布的随机数数组-

たとえば-

rand(3, 5)

MATLABは上記の命令を実行し、以下の結果を返します-

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)

MATLABは上記の命令を実行し、以下の結果を返します-

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]

MATLABは上記の命令を実行し、以下の結果を返します-

a =
   7     9     5
   6     1     9
   4     3     2

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

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

MATLABは上記の命令を実行し、以下の結果を返します-

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)

MATLABは上記の命令を実行し、以下の結果を返します-

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是连接数组所依据的维

スクリプトファイルを作成し、以下のコードを入力します-

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配列をコピーおよびスライス
reshape配列をリシャーピング
rot90行列を回転90度
shiftdim次元を移動
issorted集合要素がソート順序に従っているかどうかを確認
sort

配列要素を昇順または降順にソート

sortrows行を昇順にソート
squeeze単一次元を削除
transpose転置
vectorizeベクトライズ表現

以下の例は、上で述べた機能の一部を示しています。

要素の長さ、次元と数-

スクリプトファイルを作成し、以下のコードを入力します-

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % xベクトルの長さ
y = rand(3, 4, 5, 2);
ndims(y) % 配列yの次元数
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % s中の要素数

スクリプトを実行すると、以下の結果が表示されます-

ans =  8
ans =  4
ans =  23

配列要素の円移動

スクリプトファイルを作成し、以下のコードを入力します-

a = [1 2 3; 4 5 6; 7 8 9] % 元の配列a
b = circshift(a,1) % 最初の次元の値を下に円移動 1.
c = circshift(a,[1 -1]) % 最初の次元の値を下に円移動 1 
                           % そして二つ目の次元の値を左に%で 1.

スクリプトを実行すると、以下の結果が表示されます-

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

ソート配列

スクリプトファイルを作成し、以下のコードを入力します-

v = [ 23 45 12 9 5 0 19 17] % 水平ベクトル
sort(v) % vをソート
m = [2 6 4; 5 3 9; 2 0 1] % 二つの次元の配列
sort(m, 1) % 行に沿ってmをソート
sort(m, 2) % 列に沿ってmをソート

スクリプトを実行すると、以下の結果が表示されます-

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はセル配列です;

  • dimはスカラー整数または整数ベクトルで、セル配列Cの次元を指定します;

  • dim1、...、dimNは指定されたC次元のスカラー整数です;

  • obj以下のいずれかです-

    • Javaの配列またはオブジェクト

    • .NETのType System.StringまたはSystem.Objectの配列

スクリプトファイルを作成し、以下のコードを入力します-

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

スクリプトを実行すると、以下の結果が表示されます-

c = 
{
   [1,1] = レッド
   [2,1] =  1
   [1,2] = ブルー
   [2,2] =  2
   [1,3] = グリーン
   [2,3] =  3
   [1,4] = イエロー
   [2,4] =  4
   [1,5] = ホワイト
   [2,5] =  5
}

セル配列内のデータへのアクセス

セル配列の要素を参照する方法は2種類あります。-

  • 最初の角括弧()内にインデックスを括ることで、セル集合を参照します。

  • 大括号{}内にインデックスを括ることで、単一のセル内のデータを参照します。

最初の括弧内にインデックスを括ると、セルの集合を指します。

括弧内のセル配列のインデックスはセル集合を指します。

たとえば-

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

MATLABは上記の命令を実行し、以下の結果を返します-

ans = 
{
   [1,1] = レッド
   [2,1] =  1
   [1,2] = ブルー
   [2,2] =  2
}

また、大括号を使ってセルの内容にアクセスすることもできます。

たとえば-

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

MATLABは上記の命令を実行し、以下の結果を返します-

ans = 青色
ans = 緑色
ans = 黄色