工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> MATLAB

MATLAB:多次元配列と特殊配列をマスターする

MATLABでは、すべてのデータ型の変数が多次元配列として扱われます。ベクトルは1次元配列、行列は2次元配列です。

ベクトルと行列については既に説明しました。この章では多次元配列について説明しますが、その前にいくつかの特殊な配列タイプについて見ていきましょう。

MATLABの特殊配列

このセクションでは、特殊な配列を作成する関数について説明します。これらの関数では、引数を1つ指定すると正方配列、2つ指定すると長方形配列が作成されます。

zeros()関数は、すべての要素が0の配列を作成します。

例:

ライブデモ
 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()関数は魔方陣配列を作成します。引数は正方行列のサイズを指定するスカラで、3以上でなければなりません。

ライブデモ
 magic(4) 

MATLABは上記のステートメントを実行し、以下の結果を返します。

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

多次元配列

2つ以上の次元を持つ配列をMATLABでは多次元配列と呼びます。MATLABの多次元配列は、通常の2次元行列の拡張です。

一般的に多次元配列を生成するには、まず2次元配列を作成し、それを拡張します。

例えば、2次元配列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列の配列です。これに第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...) 

ここで、

例

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

ライブデモ
 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次元配列の次元順序変更の逆操作
permute N次元配列の次元を並べ替え
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次元の値を1つ下に循環シフト c = circshift(a,[1 -1]) % 第1次元の値を1つ下に % かつ第2次元の値を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] % 2次元配列 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関数はセル配列の作成に使用します。cell関数の構文は以下の通りです。

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

パラメータ

例

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

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

ファイルを実行すると、以下の結果が表示されます。

 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 } 

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

セル配列の要素を参照するには2つの方法があります。

インデックスを丸括弧で囲むと、セルの集合を参照します。

滑らかな括弧でのセル配列インデックスは、セルの集合を参照します。

例:

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

MATLABは上記のステートメントを実行し、以下の結果を返します。

 ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 } 

波括弧によるインデックスでセルの内容にアクセスすることもできます。

例:

ライブデモ
 c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4} 

MATLABは上記のステートメントを実行し、以下の結果を返します。

 ans = Blue ans = Green ans = Yellow 

MATLAB

  1. C# 配列をマスターする:宣言、初期化、操作
  2. C# ジャグ配列をマスターする:宣言、初期化、アクセス
  3. C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
  4. C++動的配列の確保をマスター:コード例付き実践ガイド
  5. MATLAB徹底解説:数値計算環境の決定版
  6. MATLAB変数の理解:基礎から実例まで徹底解説
  7. MATLAB必須コマンドリファレンス:効率的な計算のための完全ガイド
  8. MATLAB行列完全マスター:作成・参照・操作・削除の基礎
  9. MATLABの数値型:型、格納、変換
  10. MATLAB文字列をマスター:作成と活用ガイド
  11. Java配列コピー技法:包括的ガイド