はじめに

MATLABは、その名の通り行列演算に特化したプログラミング環境です。行列や配列を使いこなすことは、数値解析やデータ分析を効率的に進めるうえで不可欠です。本記事では、MATLABでの行列・配列の基本的な取り扱い方法と、配列インデックス付けの基礎をわかりやすく解説します。

キーワード例

  • MATLAB, 行列, 配列, インデックス, 数値解析, データ分析

行列と配列の基本

MATLABにおける行列と配列の違い

MATLABでは、行列配列はほぼ同義で使われることが多いですが、一般的には以下のように解釈されます。

  • 配列 (Array)
    1次元以上の要素が並んだコレクション。ベクトル(1次元)や行列(2次元)だけでなく、3次元以上の多次元配列も含む広義の概念。
  • 行列 (Matrix)
    2次元(行と列)で構成される配列の一種。数学的な行列演算の際は特にこちらの表現が用いられます。

図1.行列と配列のイメージ

行列や配列の作成方法

1. ベクトルの作成 (1次元配列)

% 行ベクトル
rowVec = [1 2 3 4 5];
% 列ベクトル
colVec = [1; 2; 3; 4; 5];
% コロン演算子を使った連続値
vec = 1:5;      % 1から5まで整数ステップ
vec2 = 0:0.5:2; % 0から2まで0.5刻み

図2.1次元配列の例

2. 行列(2次元配列)の作成

下記の例では、3×3の行列を生成しています。行ごとにセミコロン”;”を使い、列はスペースまたはカンマ区切りで表現します。

A = [1 2 3;
     4 5 6;
     7 8 9];

図3.2次元配列の例

3. 多次元配列の作成

cat関数を使うことで、既存の行列を3次元方向に連結し、多次元配列を作ることができます。

B = cat(3, A, A*2);

図4.3次元配列の例

配列インデックス付けの基礎

MATLABで配列や行列にアクセスする際、インデックス指定が非常に重要です。基本的な指定方法と応用例を紹介します。

1. 単純インデックス (行列の場合)

(行, 列)の形式で要素を取得します。

% 2次元行列:A
A = [1 2 3; 4 5 6; 7 8 9];
disp('2次元配列')
disp(A)
% A(行番号, 列番号)の値の取得
val = A(2,3); % 2行目・3列目 => 6
disp('行列Aの2行目・3列目の値')
disp(val)

図5.単純インデックスの指定

2. ベクトルによるインデックス指定

複数の行・列をベクトルで指定し、特定の要素を抽出できます。

% 2次元行列:A
A = [1 2 3; 4 5 6; 7 8 9];
disp('2次元配列')
disp(A)
% 1・3行目と2・3列目の要素をまとめて取得
subset = A([1 3], [2 3]);
disp('行列Aの1・3行目と2・3列目の要素をまとめて取得')
disp(subset)

図6.複数インデックスの指定

3. コロン:による一括指定

コロンは「すべての範囲」を表すため、縦か横の全要素を一括で指定できます。

% 2次元行列:A
A = [1 2 3; 4 5 6; 7 8 9];
disp('2次元配列')
disp(A)
% Aの2行目すべてを取得
row2 = A(2, :);
disp('行列Aの2行目すべてを取得')
disp(row2)
% Aの2列目すべてを取得
col2 = A(:, 2);
disp('行列Aの2列目すべてを取得')
disp(col2)

図7.行・列の指定

4. 論理インデックス

条件を満たす要素のみを簡単に抽出できる便利な機能です。

% 2次元行列:A
A = [1 2 3; 4 5 6; 7 8 9];
disp('2次元配列')
disp(A)
% Aが5を超える要素をTrue(1)に
logicalMask = A > 5;
filteredVals = A(logicalMask);
disp('Aが5を超える要素をTrue(1)に')
disp(logicalMask)
disp('行列A内の5より大きい数字')
disp(filteredVals)

図8.条件を満たす要素(5より大きい)を抽出

表1.配列インデックスの指定の方法と用途

インデックス指定用途・特徴
単一指定A(2, 3)行列の1要素を取り出す
ベクトル指定A([1 3],[2 3])特定の行・列をまとめて取得
コロン演算子A(:, 2)全行(or 全列)などを一括取得
論理インデックスA(A>5)条件を満たす要素のみ抽出

まとめ

MATLABにおいて、行列や配列の扱いはすべての基本です。配列インデックス付けを自由に扱えるようになると、データの解析や可視化が効率的に進められます。

  • 行列や配列はコロンやベクトルなど、さまざまな方法でアクセス可能
  • 論理インデックスを使うと条件に合った要素抽出が便利
  • 多次元配列にも同様のインデックス付けが適用可能

上手に行列操作をマスターすれば、機械学習や数値シミュレーション、信号処理など多方面で強力な武器となります。ぜひ基本を押さえて活用していきましょう。

さらなる学習リソース

  • MathWorks公式サイト (英語・日本語対応)
  • MATLABヘルプ: Array Indexing
  • MATLAB関連のフォーラムやチュートリアル動画

キーワード再掲: MATLAB, 行列, 配列, インデックス付け, ベクトル, 多次元配列