MATLAB-配列

MATLABのすべてのデータ型のすべての変数は、多次元配列です。ベクトルは1次元配列であり、行列は2次元配列です。

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

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

魔方陣

A magic square は、要素が行方向、列方向、または対角線上に追加されたときに同じ合計を生成する正方形です。

ザ・ magic()関数は魔方陣配列を作成します。正方形のサイズを与える特異な引数を取ります。引数は3以上のスカラーでなければなりません。

magic(4)

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

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

多次元配列

3次元以上の配列は、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列の配列です。我々はに三次元を追加することができますように値を提供することで、 -

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は、配列の内容を並べ替え、回転、並べ替え、形状変更、またはシフトするための次の関数を提供します。

関数 目的
長さ ベクトルの長さまたは最大配列次元
ndims 配列の次元数
ドンメル 配列要素の数
サイズ 配列の次元
iscolumn 入力が列ベクトルであるかどうかを判別します
isempty 配列が空かどうかを判別します
ismatrix 入力が行列であるかどうかを判別します
isrow 入力が行ベクトルであるかどうかを判別します
isscalar 入力がスカラーかどうかを判別します
isvector 入力がベクトルかどうかを判別します
blkdiag 入力引数からブロック対角行列を構築します
サークシフト 配列を循環的にシフトします
ctranspose 複素共役転置
diag 対角行列と行列の対角
フリップディム 指定された次元に沿って配列を反転します
fliplr 行列を左から右に反転します
フリップッド 行列を上下に反転します
ipermute ND配列の順列次元を逆にします
パーミュート ND配列の寸法を再配置します
repmat 複製とタイル配列
形を変える 配列の形状を変更します
rot90 行列を90度回転します
shiftdim 寸法をシフトします
issorted セット要素がソートされた順序であるかどうかを判別します
ソート 配列要素を昇順または降順で並べ替えます
sortrows 行を昇順で並べ替えます
スクイーズ シングルトン次元を削除します
転置 転置
ベクトル化 式をベクトル化する

次の例は、上記の機能の一部を示しています。

Length, Dimension and Number of elements −

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

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)      % length of x vector
y = rand(3, 4, 5, 2);
ndims(y)       % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)       % no of elements in s

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

ans =  8
ans =  4
ans =  23

Circular Shifting of the Array Elements −

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

a = [1 2 3; 4 5 6; 7 8 9]  % the original array a
b = circshift(a,1)         %  circular shift first dimension values down by 1.
c = circshift(a,[1 -1])    % circular shift first dimension values % down by 1 
                           % and second dimension values to the left % by 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]  % horizontal vector
sort(v)                      % sorting v
m = [2 6 4; 5 3 9; 2 0 1]    % two dimensional array
sort(m, 1)                   % sorting m along the row
sort(m, 2)                   % sorting m along the column

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

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配列またはオブジェクト
    • System.String型またはSystem.Object型の.NET配列

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

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