English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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是创建的新数组
A1,A2,...是要串联的数组
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 = 黄色