高機能数値計算・可視化機能ソフト
MATLABの基本的な使い方
秋田県立大学 陳 国躍
東北大学サイバーサイエンスセンター

秋田県立大学1

MATLAB⚫MATLAB はMATrix LABoratory の略⚫高機能な数値計算◆ 特に行列演算⚫多彩な可視化機能◆ 計算結果を簡単にグラフ表示
秋田県立大学2高機能な数値計算機能⚫
⚫
⚫
⚫

変数宣言不要対話型の実行
豊富な関数ライブラリ
配列が基本的データ要素

多彩な可視化機能⚫ 豊富なグラフィックスツール
秋田県立大学3

数値⚫ 整数と実数を区別しない⚫ 型の指定が不要である⚫ データはすべて配列として扱われる

変数⚫ 変数の名前は英字で始まる⚫ 大文字と小文字は区別される⚫ MATLAB関数の名前とは異なる必要がある
秋田県立大学4

MATLAB の Toolbox (1)⚫ MATLAB⚫ Simulink⚫ Curve Fitting Toolbox：数式近似ツール⚫ Communications System Toolbox：通信システムの設計、解析⚫ MATLAB Compiler：MATLAB アプリケーションを実行ファイル、共有ライブラリとして生成⚫ Control System Toolbox：線形制御システムの設計、解析⚫ DSP System Toolbox：信号処理システムの設計とシミュレーション⚫ Fuzzy Logic Toolbox：ファジー理論に基づくシステムの設計、解析⚫ System Identification Toolbox：測定された入出力データから動的システムの数学モデルを構築⚫ Image Processing Toolbox：画像処理、解析、可視化およびアルゴリ
ズム開発のためのグラフィカル ツール

秋田県立大学5

MATLAB の Toolbox (2)⚫ MATLAB Coder：MATLABコードからスタンドアロンの C コードとC++ コードを生成⚫ Model Predictive Control Toolbox：予測制御システムの設計、解析⚫ Neural Network Toolbox：ニューラルネットワーク理論を用いた複雑非線形事象のモデリング⚫ Optimization Toolbox：標準的および大規模な最適化に広く使用されるアルゴリズムを提供⚫ Partial Differential Equation Toolbox：偏微分方程式の解法ツール⚫ Fixed-Point Toolbox：固定小数点機能が利用可能⚫ Robust Control Toolbox：ロバスト性の評価、解析⚫ Simulink Coder：Simulinkダイアグラム、および MATLAB関数から
C コードと C++ コードを生成

秋田県立大学6

MATLAB の Toolbox (3)⚫ Simulink Control Design：Simulinkでモデル化された制御システムの設計と解析⚫ Signal Processing Toolbox：アナログおよびデジタル信号処理 (DSP)のアルゴリズムを提供⚫ Symbolic Math Toolbox：数式処理と可変精度演算を行うためのツールを提供⚫ Simulink Design Optimization：Simulinkでモデル化された制御シス
テムの数値最適化⚫ Statistics Toolbox：データの整理、解析、およびモデリングのためのアルゴリズムとツールを提供⚫ Simulink Verification and Validation：Simulinkでモデル化された制御システムの確認、検証およびテスト⚫ Wavelet Toolbox：ウェーブレット変換を用いた画像処理、解析、可視化ツール
秋田県立大学7

MATLAB の起動⚫起動直後のウィンドウ

秋田県立大学8

MATLAB の終了⚫ >> は MATLAB の入力促進記号（プロンプト）⚫ コマンド quit あるいは exit を入力>> quit <R>>> exit <R><R> はリターン（改行）の意味
秋田県立大学9

数値計算の例
そのまま入力しても簡単に演算できる

(1)

(2)

秋田県立大学10

ベクトル・行列の入力
𝐴𝑋 =𝐵

秋田県立大学11

ベクトル・行列演算の例
数学的な記述に近い形で演算できる
MATLAB の大きな特徴の一つ
𝑋 = 𝑖𝑛𝑣 𝐴 𝐵

固有値最大値
平均値
配列のサイズ配列の第2要素秋田県立大学12複素数
虚数表現として、 i と j のどちらも利用可能

秋田県立大学13

複素数ベクトル・行列

秋田県立大学14

複素数演算の例
二つの固有値複素数の実数部

複素数の虚数部

複素数の絶対値

秋田県立大学15

ファイルとデータの入出力
1.

sam1.datというファイルの内容(次のデータが一行に書かれていることに注意)：
0.0 0.3 0.95 -0.4 0.4 0.2 -0.3 0.0 0.3 0.0 -0.2 0.1 0.0 0.0 0.0 0.0

2.

sam2.datというファイルの内容(次のデータが7行に書かれていることに注意)：
0395-42-3

3. sam3.dat というファイルの内容(5行3列のデータ)：
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
4.1 4.2 4.2
5.1 5.2 5.3

秋田県立大学16

ファイルとデータの入出力

秋田県立大学17

スクリプトファイル（ .m ファイル）
Sample.m というファイルの内容

MATLAB上の実行は “sample<R>”>> sample<R>
秋田県立大学18

2次元グラフィックス (plot 関数)
表示

説明plot(y)y の配列番号を横軸として y のグラフを描く

plot(x,y)x を横軸として y のグラフを描く

plot(x1,y1,x2,y2,・・・)(xn,yn) の組み合わせで複数のグラフを描く

plot(x,y,LineSpec)LineSpec で指定された線種、マーカ、色でグラフを描く

plot(x,y,’LineSpec’,lw)‘LineWidth’, lwによって、lw で指定された線幅を描く

秋田県立大学19

plot 関数の例(1)

秋田県立大学20

plot 関数の例(2)秋田県立大学21

plot 関数の例(3)秋田県立大学22

グラフの装飾(1)plot(x, y, ’linetype’)‘linetype’ を省略した場合、自動的に青色の実線

秋田県立大学23

グラフの装飾(2)
title

タイトル

text

文字列表示

xlabel

x軸ラベル

gtext

マウス指定による文
字列表示

ylabely軸ラベル

legend凡例

zlabel

z軸ラベル

grid

グリッドライン

秋田県立大学24

plot 関数の例(4)秋田県立大学25

３次元グラフィックス関数
mesh(Z)

3次元プロットの基本

mesh(X,Y,Z)
meshc(Z)meshプロットの底面にコンター・プロット

meshc(X,Y,Z)
surf(Z)

表面プロットの基本

surf(X,Y,Z)
surfc(Z)surfプロットの底面にコンター・プロット

surfc(X,Y,Z)

秋田県立大学26

peaks 多峰型関数
f ( x, y ) = 3(1 − x) e2••− x 2 − ( y +1) 2x
1 −( x +1) 2 − y 2
3
5− x2 − y2− 10( − x − y )e− e
53

peaks(n)，引数のnを省くと、標準値49
mesh，surf ， pcolor 等のデモに役立

秋田県立大学27

3次元グラフィックス関数

秋田県立大学28

3次元グラフィックス例(mesh)

秋田県立大学29

3次元グラフィックス例(surfc)

秋田県立大学30

2次元グラフィックス例(pcolor)

秋田県立大学31

2次元グラフィックス例(pcolor, contour)

秋田県立大学32

2次元グラフィックス例(surf)

秋田県立大学33

3次元グラフィックス例(contour3)

秋田県立大学34

3次元プロットの視点角度の設定
view(Azimuth, Elevation)

秋田県立大学35

視点角度の設定例

秋田県立大学36

グラフィックスの出力
print [ -option ] filename

option:dps: 白黒
dpsc: カラー
deps: 白黒depsc: カラー

ps ファイルps ファイル
eps ファイル
eps ファイル

秋田県立大学37出力されたグラフの例
グラフを表示した後でも図の編集が可能

秋田県立大学38

補足説明
一部コマンドの紹介

秋田県立大学配列⚫ ベクトル ・ ・ ・ ・ ・ ・ ・ 1 次元配列
⚫ 行列 ・ ・ ・ ・ ・ ・ ・ ・ ・ 2 次元配列
⚫ 配列の添え字は 1 から始まる

配列要素の指定⚫ ベクトル・ 1 次元配列 X の第 k 要素は X(k)⚫ 行列 ・ ・ ・ 2 次元配列 A の i 行 j 列要素は A( i , j )

秋田県立大学40

ベクトルの作成方法 (1)行ベクトル作成
行ベクトルの右肩に‘ （転置）で列ベクトル作成

セミコロン ； は行の区切り
で、列ベクトル作成
列ベクトルの右肩に‘ （転置）で行ベクトル作成
秋田県立大学41

ベクトルの作成方法 (2)初期値，増分，最終値をコロンで区切って指定
1 から 30 まで 5 刻みで作成

50 から 1 まで -10 刻みで作成

増分が 1 の時は省略可関数 linspace を使って，初期値，最終値，要素の数を指定-1 から 1 まで等間隔で 5 要素作成
秋田県立大学42

行列の結合と縮小

秋田県立大学43• 継続行： 行末に3つのピリオド(…)を書くと継続できる• ans : 直前のコマンドの答え• 最後にセミコロン ( ; ) があった場合，結果を非表示にする

秋田県立大学44

一般行列関数
関数名など

機能

記述

等間隔ベクトル

x=m1:m2
x=m1:a:m2

linspace

線形に等間隔のベクトル

x=linspace(m1,m2,n)(初期値m1, 最終値m2, 個数n)zeros

すべての要素が0の行列

X=zeros(m,n)
X=zeros(m) (mxmの正方行列）

ones

すべての要素が1の行列

同上

eye

単位行列

同上

rand

0と1の間の一様乱数行列

同上

randn

平均値が0、標準偏差が1の正規乱数行列

同上

diag

対角行列

：

X=diag([x1,x2,・・・,xn])([x1,x2,・・・,xn]は対角要素ベクトル)

秋田県立大学45

一般行列関数（例）秋田県立大学46

各要素ごとの演算.*

乗算./割算.^

べき乗

行列積

結
果
各要素 がごとの積 異なる
秋田県立大学47小数点、4種類の「丸め」
round

四捨五入

fix

切り捨て

ceil

＋無限大の方へ切り上げ

floor－無限大の方へ切り上げ

floor

-1

ceil

0

秋田県立大学148

バイナリ・ファイルの保存と読み出し
fopen

ファイルのオープン

fcloseファイルのクローズ

fwrite

バイナリ・データの保存

fread

バイナリ・データの読み込み

C と Fortran のようにバイナリ・データの保存と読み出しが可能

秋田県立大学49

予約定数・変数ans

直前のコマンドの答

eps

浮動小数点の相対精度

flops

浮動小数点演算回数

i, j

虚数単位

inf

（無限大）

NaN

Not-a-number （不定値）piπ (3.1416)

realmax

最大の浮動少数

realmin

最小の浮動少数

秋田県立大学50

2次元グラフィックス関数
barerrorbar
stemhistpolar

棒グラフプロット
エラーバーのプロット
離散データ列のプロット
ヒストグラム極座標プロット

秋田県立大学51

分割プロット
subplot(m,n,p)Figureウインドウを m × n に分割し、p で指定する位置

1

2

3

4

5

6

分割プロットの解除には subplot(1,1,1) を実行する
秋田県立大学52

例

秋田県立大学53

有用なコマンドinput

a=input(‘statement’)
a=input(‘statement’ , ’s’)clock

t=clock

now

t=now

date

day=date

datestr

day=datestr(now)day=datestr(now,s)
例：s=0→6-Jun-2014 13:35:45
s=1→6-Jun-2014
s=2→ 06/06/14

秋田県立大学54

ヘルプ・サポートコマンド
demo

デモプログラムの実行

help

オンラインでのドキュメント表示

info

MATLABとThe MathWorks に関する情報の表示

lookfor

ヘルプの記載事項からのキーワード検索

path

MATLABの検索パスの制御

type

M-ファイル内容の表示

what

ディレクトリ内のM-,MAT-MEX-ファイル名の表示

which

関数やファイルが存在する位置の表示

秋田県立大学55

変数およびワークスペースの管理
clc

コマンドウィンドウ上の表示の削去

clear

メモリから変数や関数を消去

close

表示しているウィンドウを消去

disp

行列あるいはテキストの表示

lengthベクトルの長さを求める

load

ディスクから変数を読み込む

save

ワークスペースの変数をディスクに保存

size

行列の大きさを求める

who

メモリ内にある変数名の表示

whos

メモリ内にある変数の詳細な表示

秋田県立大学56

MatlabのGUI⚫ グラフィカル ユーザー インターフェイスの略称⚫ GUI を使用して、ユーザーは対話的に作業することができる⚫ GUI のユーザーは、タスクを実行するためにスクリプトを作成したり、コマンド ラインでコマンドを入力する必要はない⚫ タスクを達成するプログラムのコーディングとは異なり、GUI のユーザーは、タスクがどのように実行されるかについての詳細を理解する必要もない

秋田県立大学57GUIの例⚫ GUI コンポーネントの例として、メニュー、ツールバー、 プッシュ ボタン、ラジオ ボタン、リスト ボック
ス、スライダーなどがある

秋田県立大学58

GUI について（以下資料参照）⚫ MATLAB Graphical User Interface 開発
環境 GUIDEについて
SENAC Vo1.47, No.3, 37-56, 2014

秋田県立大学59参考文献⚫ 陳国躍，共同利用支援係 「高機能数値計算・可視化ソフトMATLABの基本的な使い方」
SENAC Vo1.46, No.3, 29-43, 2013秋田県立大学60