初心者向けMATLABの使い方まとめ
これからMATLABを始める方のための包括的なガイドです。基本操作から実践的な技術まで、効率的に学習できるようにまとめました。
はじめに
MATLAB(MATrix LABoratory)は、数値計算とデータ可視化のための強力なプログラミング環境です。工学、科学、金融などの分野で広く使用されており、行列演算を得意とする特徴があります。本記事では、MATLAB初心者が効率的に学習できるよう、必要な知識を体系的にまとめています。
1. MATLABの基本環境
1.1 インストールと起動
MATLABを使用するには、まずMathWorks社のウェブサイトから製品をダウンロードし、インストールする必要があります。学生版やトライアル版も利用可能です。また、MATLAB Onlineを使用すれば、ブラウザ上で直接MATLABを使用することも可能です。
https://matlab.mathworks.com/
1.2 MATLABデスクトップ環境
MATLABのデスクトップ環境は以下の主要な要素から構成されています:
- コマンドウィンドウ:MATLABコマンドを直接入力・実行する場所
- ワークスペース:現在使用中の変数とその値を表示
- 現在のフォルダー:ファイルの管理と操作
- コマンド履歴:過去に実行したコマンドの記録
- エディター:スクリプト(.mファイル)の作成・編集
2. 基本操作
2.1 コマンドの実行
MATLABでは、コマンドウィンドウの >>
プロンプトに続いてコマンドを入力し、Enterキーを押すことで実行します。
>> 2 + 3
ans = 5
>> x = 10
x = 10
2.2 基本的なコマンド
コマンド | 機能 | 例 |
---|---|---|
clc |
コマンドウィンドウをクリア | clc |
clear |
ワークスペースの変数をクリア |
clear または clear x
|
who |
現在の変数を表示 | who |
whos |
変数の詳細情報を表示 | whos |
help |
関数のヘルプを表示 | help sin |
3. 変数とデータ型
3.1 変数の定義
a = 5; % 数値(スカラー)
name = 'MATLAB'; % 文字列(文字配列)
str = "Hello"; % 文字列(string 型)
flag = true; % 論理値
ポイント: 行末にセミコロン(;)を付けると、結果が表示されません。これは長い計算や大きなデータを扱う際に便利です。
3.2 基本的なデータ型
- 数値型(double):既定の数値型、倍精度浮動小数点
- 文字型(char):単一引用符で囲まれた文字列
- 文字列型(string):二重引用符で囲まれた文字列
- 論理型(logical):true/falseの値
- 整数型:int8, int16, int32, int64, uint8など
4. 配列と行列
4.1 配列の作成
MATLABの最大の特徴は、すべてのデータが配列(行列)として扱われることです。
% 行ベクトル
row_vector = [1, 2, 3, 4, 5];
% または
row_vector = [1 2 3 4 5];
% 列ベクトル
col_vector = [1; 2; 3; 4; 5];
% 行列
matrix = [1 2 3; 4 5 6; 7 8 9];
4.2 特殊な行列の作成
関数 | 機能 | 例 |
---|---|---|
zeros(m,n) |
m×nの零行列 | zeros(3,3) |
ones(m,n) |
m×nの1行列 | ones(2,4) |
eye(n) |
n×nの単位行列 | eye(3) |
rand(m,n) |
m×nの乱数行列(0-1の一様分布) | rand(2,3) |
randn(m,n) |
m×nの乱数行列(標準正規分布) | randn(2,3) |
4.3 数列の作成
% コロンを使用した数列
x = 1:10; % 1から10まで1刻み
y = 0:0.5:5; % 0から5まで0.5刻み
z = 10:-1:1; % 10から1まで-1刻み(逆順)
% linspace関数
t = linspace(0, 2*pi, 100); % 0から2πまで100等分
4.4 行列要素へのアクセス
A = [1 2 3; 4 5 6; 7 8 9];
% 個別要素へのアクセス
A(2,3) % 2行3列目の要素(値:6)
% 行・列の抽出
A(2,:) % 2行目すべて
A(:,1) % 1列目すべて
A(1:2, 2:3) % 1-2行目、2-3列目の部分行列
% 論理インデックス
A(A > 5) % 5より大きい要素を抽出
5. 基本的な演算
5.1 算術演算
演算子 | 機能 | 例 |
---|---|---|
+ |
加算 | a + b |
- |
減算 | a - b |
* |
行列乗算 | A * B |
.* |
要素毎の乗算 | A .* B |
/ |
右除算 | A / B |
./ |
要素毎の除算 | A ./ B |
^ |
行列のべき乗 | A ^ 2 |
.^ |
要素毎のべき乗 | A .^ 2 |
注意: ドット(.)の有無によって演算の意味が変わります。ドット付きは要素毎の演算、ドットなしは行列としての演算を意味します。
5.2 関係演算・論理演算
演算子 | 機能 | 例 |
---|---|---|
== |
等しい | a == b |
~= |
等しくない | a ~= b |
< |
より小さい | a < b |
> |
より大きい | a > b |
&& |
論理AND(スカラー) | a && b |
` | ` | |
& |
論理AND(配列) | A & B |
` | ` | 論理OR(配列) |
6. 数学関数
6.1 基本的な数学関数
関数 | 機能 | 例 |
---|---|---|
sin, cos, tan |
三角関数 | sin(pi/4) |
asin, acos, atan |
逆三角関数 | asin(0.5) |
exp |
指数関数 | exp(1) |
log |
自然対数 | log(10) |
log10 |
常用対数 | log10(100) |
sqrt |
平方根 | sqrt(16) |
abs |
絶対値 | abs(-5) |
round |
四捨五入 | round(3.7) |
6.2 行列関数
関数 | 機能 | 例 |
---|---|---|
size |
行列のサイズ | size(A) |
length |
ベクトルの長さ | length(v) |
det |
行列式 | det(A) |
inv |
逆行列 | inv(A) |
transpose |
転置行列 |
A' または transpose(A)
|
eig |
固有値・固有ベクトル | eig(A) |
rank |
行列の階数 | rank(A) |
7. 制御構造
7.1 条件分岐(if文)
x = 5;
if x > 0
disp('xは正の数です');
elseif x < 0
disp('xは負の数です');
else
disp('xは0です');
end
7.2 switch文
grade = 'A';
switch grade
case 'A'
disp('優秀');
case 'B'
disp('良好');
case 'C'
disp('可');
otherwise
disp('不可');
end
7.3 for文(繰り返し処理)
% 基本的なfor文
for i = 1:5
disp(['i = ', num2str(i)]);
end
% 配列を使ったfor文
values = [2, 4, 6, 8, 10];
for val = values
disp(['値: ', num2str(val)]);
end
7.4 while文
i = 1;
while i <= 5
disp(['i = ', num2str(i)]);
i = i + 1;
end
8. 関数の作成
8.1 関数ファイルの作成
MATLABでは、独自の関数を作成することができます。関数は.mファイルとして保存します。
function result = my_function(x, y)
% MY_FUNCTION - 二つの数値を加算する関数
% result = my_function(x, y) は x と y の和を返す
result = x + y;
end
8.2 複数の出力を持つ関数
function [sum_val, diff_val, prod_val] = calc_operations(a, b)
% CALC_OPERATIONS - 複数の演算を行う関数
sum_val = a + b;
diff_val = a - b;
prod_val = a * b;
end
% 使用例
[s, d, p] = calc_operations(10, 5);
8.3 無名関数(匿名関数)
% 無名関数の定義
f = @(x) x.^2 + 2*x + 1;
% 使用例
result = f(3); % 16を返す
% 複数の引数を持つ無名関数
g = @(x, y) x.^2 + y.^2;
result = g(3, 4); % 25を返す
9. データの可視化
9.1 基本的なプロット
% 基本的な2次元プロット
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y);
title('正弦波');
xlabel('x');
ylabel('sin(x)');
grid on;
9.2 複数のプロット
% 一つのグラフに複数のプロット
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure;
plot(x, y1, 'r-', x, y2, 'b--');
legend('sin(x)', 'cos(x)');
title('三角関数');
xlabel('x');
ylabel('y');
grid on;
9.3 subplot(複数グラフの表示)
x = 0:0.1:2*pi;
figure;
subplot(2, 2, 1);
plot(x, sin(x));
title('sin(x)');
subplot(2, 2, 2);
plot(x, cos(x));
title('cos(x)');
subplot(2, 2, 3);
plot(x, tan(x));
title('tan(x)');
ylim([-5, 5]);
subplot(2, 2, 4);
plot(x, exp(x));
title('exp(x)');
9.4 3次元プロット
% 3次元プロット
t = 0:0.1:4*pi;
x = cos(t);
y = sin(t);
z = t;
figure;
plot3(x, y, z);
title('3次元螺旋');
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on;
10. ファイル操作
10.1 データの保存と読み込み
% データの保存
A = rand(5, 5);
save('mydata.mat', 'A'); % .matファイルとして保存
% データの読み込み
load('mydata.mat'); % 変数Aが復元される
% CSVファイルの読み書き
csvwrite('data.csv', A); % CSV形式で保存
B = csvread('data.csv'); % CSV形式で読み込み
10.2 テキストファイルの操作
% ファイルの書き込み
fid = fopen('output.txt', 'w');
fprintf(fid, 'Hello, MATLAB!\n');
fprintf(fid, 'Number: %d\n', 42);
fclose(fid);
% ファイルの読み込み
fid = fopen('output.txt', 'r');
content = fread(fid, '*char')';
fclose(fid);
disp(content);
11. デバッグとエラー処理
11.1 デバッグの基本
MATLABでは、エディター内でブレークポイントを設定することで、プログラムの実行を一時停止し、変数の値を確認できます。
- 行番号の左側をクリックしてブレークポイントを設定
- F5キーでプログラムを実行
- F10キーでステップ実行
- F11キーでステップイン
- 変数の値はワークスペースで確認
11.2 エラー処理(try-catch文)
try
% エラーが発生する可能性のある処理
result = 10 / 0;
catch ME
% エラーが発生した場合の処理
disp('エラーが発生しました:');
disp(ME.message);
end
12. 実践的なTips
12.1 効率的なプログラミング
- ベクトル化:ループの代わりに配列演算を使用
- メモリ事前確保:大きな配列は事前に初期化
- 適切なデータ型:メモリ効率を考慮した型選択
- コメント:コードの可読性を向上
% 悪い例(遅い)
result = [];
for i = 1:1000
result = [result, i^2];
end
% 良い例(速い)
result = zeros(1, 1000); % 事前確保
for i = 1:1000
result(i) = i^2;
end
% さらに良い例(ベクトル化)
result = (1:1000).^2;
12.2 便利なコマンド
コマンド | 機能 | 例 |
---|---|---|
tic, toc |
実行時間測定 | tic; [処理]; toc; |
disp |
値の表示 | disp('Hello') |
fprintf |
フォーマット出力 | fprintf('x = %.2f\n', x) |
input |
ユーザー入力 | x = input('値を入力: ') |
pause |
実行の一時停止 | pause(2) |
13. 学習リソース
13.1 公式リソース
- MATLAB入門(無料オンラインコース):MathWorks公式の対話型学習コース
- MATLAB Online:ブラウザ上でMATLABを使用可能
- MATLAB Mobile:スマートフォンからMATLABにアクセス
- ドキュメンテーション:包括的なリファレンスとチュートリアル
13.2 効果的な学習方法
- 基本概念の理解:行列演算の基本を理解する
- 実践練習:簡単な問題から始めて段階的に複雑化
- プロジェクト指向:実際の問題解決に応用
- コミュニティ活用:MATLAB Centralやフォーラムの活用
- 継続的学習:新機能や高度な技術の習得
14. まとめ
本記事では、MATLAB初心者が知っておくべき基本的な知識を網羅的に解説しました。MATLABは非常に強力なツールですが、基本をしっかりと理解することで、効率的に活用できるようになります。
重要なポイントをまとめると:
- MATLABではすべてのデータが行列として扱われる
- ベクトル化を意識することで効率的なプログラムが書ける
- 豊富な組み込み関数を活用する
- デバッグ機能を使って問題を特定・解決する
- 継続的な学習と実践が重要
今後は、特定の分野(信号処理、画像処理、機械学習など)に特化した学習を進めることをお勧めします。MATLABの強力な機能を活用して、様々な問題解決に挑戦してください。
参考文献・リンク:
- MathWorks公式サイト: https://jp.mathworks.com/
- MATLAB入門チュートリアル: https://jp.mathworks.com/support/learn-with-matlab-tutorials.html
- MATLAB基本関数リファレンス: MathWorks公式資料