はじめに
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, 行列, 配列, インデックス付け, ベクトル, 多次元配列