T1

付表 主要な MATLAB 関数
一般的な MATLAB 関数■ コマンドウィンドウの表示形式
関数名clc
format使用例

説明
コマンドウィンドウの表示をクリア

clc
format loose
format compact
format shortformat short e
format long

空行を追加して表示 (標準の設定)
余分な空行を抑制して表示
小数点以下 4 桁の short 型固定小数点で表示 (標準の設定)
short 型の指数形式で表示
double 値の場合は小数点以下 15 桁，single 値の場合は小数点以下 7 桁の long 型固定小数点で表示
long 型の指数形式で表示

format long e■ コマンドウィンドウでの入出力
関数名

disp
pause
input

使用例

説明

disp(’text’)pause
y = input(’text’)

コマンドウィンドウに text を表示
キーボードから何か入力されるまで停止
コマンドウィンドウに text を表示し，キーボードから入力された値を y に代入

fprintf

fprintf(’text: %5.3f¥n’,x) コマンドウィンドウに表示 (C 言語の関数 printfと同様の使い方)%d, %5d：整数%f, %5.3f：実数%e, %5.3e：指数形式の実数
¥n：改行
¥t：タブ

■ ワークスペース変数の保存と読み込み
関数名

使用例

説明
ワークスペース変数を表示

who
whos

who
whos

clear

clear
clear x y

ワークスペース変数すべてを消去

save(’filename’)save filename
save(’filename’,’x’,’y’)save filename x y

ワークスペース変数すべてを mat

ワークスペース変数の名前，サイズ，型を表示
ワークスペース変数のうち x, y のみを消去

save

ファイル filename.mat に保存
ワークスペース変数のうち x, y のみ
を mat ファイル filename.mat に保存

T2

付表 主要な MATLAB 関数

関数名使用例

load説明load(’filename’)load filename

mat ファイル filename.mat に保存

load(’filename’,’x’,’y’)load filename x y

mat ファイル filename.mat に保存されている変数のうち x, y のみをされている変数すべてをワークスペー
スに読み込みワークスペースに読み込み

Excel ファイル “filename.xlsx”
として data を保存
writematrix(data,’filename.txt’)
テキストファイル “filename.txt”として data を保存
writematrix(data,’filename’)data = readmatrix(’filename.xlsx’) Excel ファイル “filename.xlsx”
からデータを読み込み，data としてwritematrix writematrix(data,’filename.xlsx’)

readmatrix

定義

data = readmatrix(’filename.txt’)
data = readmatrix(’filename’)

テキストファイル “filename.txt”
からのデータの読み込み，data として定義■ 基本的な数学関数
関数名使用例

sin
cos
tan
asin
acos
atan
atan2
exp
log
log10
sqrt
real

sin(x)
cos(x)
tan(x)
asin(x)acos(x)atan(x)
atan2(y,x)
exp(x)
log(x)
log10(x)sqrt(x)real(x)imag

imag(x)abs
angle
modabs(x)angle(x)mod(m,n)説明
正弦関数 sin x (x [rad])余弦関数 cos x (x [rad])正接関数 tan x (x [rad])逆正弦関数 sin−1 x [rad]逆余弦関数 cos−1 x [rad]逆正接関数 θ = tan−1 x [rad] (−π/2 ≤ θ ≤ π/2)

tan θ = y/x となる θ [rad] (−π ≤ θ ≤ π)
指数関数 ex
自然対数関数 loge x, ln x
常用対数関数 log10 x√平方根 x 複素数 x = a + jb の実部 a = Re x
 複素数 x = a + jb の虚部 b = Im x√
a2 + b2複素数 x = a + jb の偏角 θ = tan−1 (b/a) [rad] (−π ≤ θ ≤ π)
整数 m を整数 n で割ったときの余り
実数 x の絶対値 |x|，複素数 x = a + jb の大きさ |x| =付表

主要な MATLAB 関数

T3■ 等間隔のデータ列の生成
関数名使用例

説明linspace x = linspace(xmin,xmax,n) xmin ≤ x ≤ xmax の範囲で等間隔に n 個のデータx を生成
logspace w = logspace(dmin,dmax,n) 10dmin ≤ ω = 10d ≤ 10dmax の範囲で対数スケー
ルで等間隔に n 個のデータ ω を生成 (dmin ≤ d ≤dmax の範囲で等間隔に n 個のデータ d を生成)

■ 基本的な行列の生成
関数名使用例

説明n × n の単位行列 I
m × n の零行列 O
対角行列 D = diag d1 , d2 , · · · , dneye
zeros
diag

eye(n)
zeros(m,n)
D = diag([d1 d2 d3])

blkdiag

D = blkdiag(D1,D2,D3) ブロック対角行列

D = block-diag D1 , D2 , · · · , Dn⎤
⎡D1⎥⎢
D2⎥⎢
⎥
:= ⎢..
⎥⎢.
⎦⎣
Dn00■ 基本的な行列の解析・操作
関数名

使用例

size
[m n] = size(A)length n = length(x)説明m × n 行列 A のサイズ m, nベクトル x の次元 n

N = length(A)m × n 行列 A の最大次元 N =

inv
pinv

inv(A)
pinv(A)

正方行列 A の逆行列 A−1eig

p = eig(A)

rank
det
polyn (n ≥ m)
m (n ≤ m)

m × n 行列 A の疑似逆行列 A+ := (A A)−1 A (m ≥n) もしくは A+ := A (AA )−1 (m ≤ n)
n × n 行列 A の固有値 pi (i = 1, 2, . . . , n) を集約した縦ベ
クトル p = p1 p2 · · · pn

[V P] = eig(A)n × n 行列 A の固有値 pi ，固有ベクトル vi からなる n × n 行
列 P = diag p1 , p2 , · · · , pn , V = v1 v2 · · · vn

rank(A)det(A)
c = poly(A)行列 A のランク (階数) rank A
n × n 行列 A の行列式 det A (もしくは |A|)n × n 行列 A の特性多項式|pI − A| = an pn + · · · + a1 p + a0の係数を集約した横ベクトル c = an · · · a1 a0

T4

付表 主要な MATLAB 関数

関数名使用例roots

p = roots(c)説明

横ベクトル c = an · · · a1 a0 の要素を係数とした n 次方程式

an pn + · · · + a1 p + a0 = 0
の解 p = pi を集約した縦ベクトル p = p1 p2 · · · pnmax
minxmax = max(x)[xmax imax] = max(x)xmin = min(x)[xmin imin] = min(x)n 次元ベクトル x の最大要素 xmax
n 次元ベクトル x の最大要素 xmax (x の imax 番目の要素)
n 次元ベクトル x の最小要素 xmin
n 次元ベクトル x の最小要素 xmin (x の imin 番目の要素)■ グラフの描画・操作
関数名figuresubplot

使用例

figure(i)subplot(m,n,i)

説明

i 番目のフィギュアウィンドウを作成または指定
フィギュアウィンドウを m × n に分割し，i 番目の場所を指定

close

close(i)close allplot
plot(x,y)plot(x1,y1,x2,y2)
plot3
plot3(x,y,z)
plot3(x1,y1,z1,x2,y2,z2)
semilogx semilogx(x,y)
semilogx(x1,y1,x2,y2)semilogy semilogy(x,y)
semilogy(x1,y1,x2,y2)
loglogloglog(x,y)

i 番目のフィギュアウィンドウを閉じる
すべてのフィギュアウィンドウを閉じる
横軸を x，縦軸を y としたグラフの描画
複数のグラフを描画

3 次元グラフの描画
複数の 3 次元グラフを描画
横軸を log10 x，縦軸を y としたグラフの描画
複数のグラフを描画
横軸を x，縦軸を log10 y としたグラフの描画
複数のグラフを描画
横軸を log10 x，縦軸を log10 y としたグラフの描画

title
xlabelylabellegend
xlim
ylim
axis

loglog(x1,y1,x2,y2)
title(’text’)xlabel(’text’)ylabel(’text’)legend(’text’)legend(’text1’,’text1’)
xlim([xmin xmax])ylim([ymin ymax])axis([xmin xmax ymin ymax])
axis normal
axis squareaxis onaxis off

複数のグラフを描画
グラフの描画枠の上方にタイトル text を表示
横軸にラベル text を表示
縦軸にラベル text を表示
凡例の表示
複数のグラフの凡例を表示
横軸の範囲を xmin ≤ x ≤ xmax に設定
縦軸の範囲を ymin ≤ y ≤ ymax に設定
横軸の範囲を xmin ≤ x ≤ xmax ，縦軸の範囲をymin ≤ y ≤ ymax に設定
枠を長方形にする (標準の設定)
枠を正方形にする
枠を表示 (標準の設定)
枠を非表示 (グラフのみを表示)

付表
関数名使用例

主要な MATLAB 関数

T5

説明xticksxticks(xmin:h:xmax)

横軸の目盛りを xmin から xmax まで h 刻みにyticks

yticks(ymin:h:ymax)

縦軸の目盛りを ymin から ymax まで h 刻みに

grid

grid ongrid off
hold onhold off
clf(i)

補助線の表示設定
設定

holdclf

補助線の非表示
グラフの保持 (グラフの重ね描きを許可)
グラフの解放 (グラフの重ね描きを不許可)
i 番目のフィギュアウィンドウのグラフを消去■ 制御文
関数名iffor

while

break

使用例

if i > 0
fprintf(’positive number¥n’)
elseif i < 0fprintf(’negative number¥n’)
elsefprintf(’zero¥n’)
end
for i = 1:10
fprintf(’i = %d¥n’)
end
i = 1;
while i <= 10
fprintf(’i = %d¥n’)
i = i + 1;
end
i = 1;
while true
if i > 5
fprintf(’i = %d¥n’)
break
end
i = i + 1;
end

説明
分岐処理

指定した回数の反復処理

条件が true (真) の場合に反復反復処理を強制終了

T6

付表 主要な MATLAB 関数

数式処理における MATLAB 関数
関数名使用例

説明syms x ysyms x y real
syms x y positive
syms x y integer
simplify simplify(fx)collect
collect(fx)collect(fx,x)factorfactor(fx)prod(factor(fx))
expandexpand(fx)subs
subs(fx,x,a)x, y を複素数のシンボリック変数として定義
x, y を実数のシンボリック変数として定義
x, y を正数のシンボリック変数として定義
x, y を整数のシンボリック変数として定義
f (x) を単純化
f (x) をべき乗でまとめる
f (x) を x に関するべき乗でまとめる
f (x) を因数分解したときの因数
f (x) を因数分解
f (x) の展開
f (x) の x に a を代入 (f (x) x=a )

limit

limit(fx,x,a)

極限 lim f (x)fplot

fplot(fx)fplot(fx,[xmin xmax])
fs = laplace(ft)

グラフの描画syms

laplace

ilaplace ft = ilaplace(fs)

グラフの描画 (横軸の範囲を指定)
f (t) のラプラス変換 f (s) = L f (t)
f (s) の逆ラプラス変換 f (t) = L−1 f (s)int(fx,x,a,b)

f (s) を部分分数分解
f  (x)：f (x) を x で微分
f (x)dx：f (x) を x で不定積分
 bf (x)dx：f (x) を x で定積分

taylor(fx)taylor(fx,x,’Order’,n)taylor(fx,x,a)taylor(fx,x,a,’Order’,n)f (x) の 5 次までのマクローリン展開
f (x) の n 次までのマクローリン展開
f (x) の x = a における 5 次までのテイラー展開
f (x) の x = a における n 次までのテイラー展開

partfrac partfrac(fs,s)diff
diff(fx,x)
int

x→aint(fx,x)ataylor

制御工学に関連した MATLAB 関数■ モデルの定義
関数名tfzpk
ss

使用例

sys = tf(num,den)sys = tf(sys)s = tf(’s’)
sys = zpk(z,p,K)
sys = zpk(sys)sys = ss(A,B,C,D)
sys = ss(sys)説明(T.1) 式の形式の伝達関数 P (s) を定義(T.1) 式の形式の伝達関数 P (s) に変換
ラプラス演算子 s の定義(T.2) 式の形式の伝達関数 P (s) の定義(T.2) 式の形式の伝達関数 P (s) に変換
状態空間表現 (T.3) 式の定義
状態空間表現 (T.3) 式に変換

付表

主要な MATLAB 関数

T7num = [bm ··· b1 b0]
N (s) = bm sm + · · · + b1 s + b0
N (s),=⇒(T.1)nden = [an ··· a1 a0]
D(s) = an s + · · · + a1 s + a0
D(s)z = [z1 z2 ··· zm]k(s − z1 )(s − z2 ) · · · (s − zm )P (s) ==⇒(T.2)p = [p1 p2 ··· pn](s − p1 )(s − p2 ) · · · (s − pn )ẋ(t) = Ax(t) + Bu(t)(T.3)y(t) = Cx(t) + Du(t)P (s) =■ モデルの解析
関数名

使用例

説明tfdata
zpkdatapole
zerotzero[num den] = tfdata(sys,’v’)[z p k] = zpkdata(sys,’v’)pole(sys)zero(sys)
tzero(sys)

伝達関数 P (s) の分子 N (s)，分母 D(s) を抽出
伝達関数 P (s) の零点 zi ，極 pi ，ゲイン k を抽出
伝達関数 P (s) の極 pi を抽出
伝達関数 P (s) の零点 zi を抽出
伝達関数 P (s) の (不変) 零点 zi を抽出 (多入力多出力系にも対応)

rlocusssdatarlocus(sys)[A B C D] = ssdata(sys)1 + kP (s) の根軌跡
状態空間表現 (T.3) 式の係数行列 A, B, C, Dを抽出

■ モデルの結合関数名*+, -使用例

sys = sys1*sys2
sys = sys1 + sys2 - sys3

feedback sys = feedback(sys1,sys2)
minrealsys = minreal(sys)説明
直列結合 P (s) = P1 (s)P2 (s)並列結合 P (s) = P1 (s) + P2 (s) − P3 (s)P1 (s)
1 + P1 (s)P2 (s)伝達関数 P (s) の極零相殺 (分母と分子の約分)
フィードバック結合 P (s) =■ 時間応答関数名

使用例

residueimpulse[k p] = residue(num,den)impulse(sys)impulse(sys,t)
y = impulse(sys,t);step(sys)step(sys,t)
y = step(sys,t);

step

説明
部分分数分解 (T.4) 式
インパルス応答 y(t) の描画 (時間指定なし)
インパルス応答 y(t) の描画 (時間指定あり)
インパルス応答 y(t) の計算
単位ステップ応答 y(t) の描画 (時間指定なし)
単位ステップ応答 y(t) の描画 (時間指定あり)
単位ステップ応答 y(t) の計算

T8

付表 主要な MATLAB 関数

関数名使用例

説明

stepinfo S = stepinfo(sys)y = step(sys,t);
S = stepinfo(y,t,yinf)lsim
lsim(sys,u,t)
y = impulse(sys,u,t);f (s) =単位ステップ応答 y(t) の特性
単位ステップ応答 y(t) の特性 (yinf：y∞ = P (0))
入力 u(t) に対する時間応答 y(t) の描画
入力 u(t) に対する時間応答 y(t) の計算

N (s)
kn
k1+ ··· +,=D(s)s − p1s − pnN (s) = bm sm + · · · + b1 s + b0
(n > m)D(s) = an sn + · · · + a1 s + a0
(T.4)

■ 周波数特性関数名

使用例

nyquistbodenyquist(sys)bode(sys)bode(sys,w)[Gg Gp] = bode(sys,w);
bodemag
bodemag(sys)bodemag(sys,w)
getPeakGain [Mp wp] = getPeakGain(sys)

説明
ナイキスト軌跡の描画ボード線図の描画 (周波数指定なし)
ボード線図の描画 (周波数指定あり)
ゲイン，位相差の計算
ゲイン線図の描画 (周波数指定なし)
ゲイン線図の描画 (周波数指定あり)
ピーク角周波数 ωp ，共振ピーク Mp の計算

marginmargin(sys)
ボード線図の描画と安定余裕の表示[invL Pm wpc wgc] = margin(sys) ゲイン余裕 Gm ，位相余裕 Pm ，位相交差角周波数 ωpc ，ゲイン交差角周波数
Gm = 20*log10(invL)ωgc の計算■ PID コントローラの設計
関数名pidtune

使用例

説明

[sysC info] = pidtune(sysP,type) 制御対象のモデル sysP に対し，形式をtype とした PID コントローラの設計
sysC = pidtune(sysP,type,wgc)
開ループ伝達関数のゲイン交差角周波数ωgc を指定
sysC = pidtune(sysP,type,opts)
pidtuneOptions により位相余裕や，目標値追従と外乱抑制のバランスを設定

pidTuner pidTuner(sysP)

制御対象のモデル sysP に対し，PID コントローラを視覚的に設計

type には ’P’, ’PI’, ’PD’, ’PDF’ (不完全微分とした PD コントローラ), ’PID’, ’PIDF’ (不完全微分とした PID コントローラ) や ’PI-D’, ’PI-DF’ (不完全微分とした PI–D コントローラ), ’I-PD’, ’I-PDF’ (不完全微分とした I–PD コントローラ) などを設定する．
pidtuneOptions の設定方法については文献 14) を参照されたい．

付表

主要な MATLAB 関数

T9■ 状態空間表現に基づく解析
関数名

initial

ctrb

obsv

使用例

説明x(0) = x0 に対する零入力応答 y(t) の描画 (時間指定なし)
initial(sys,x0,t)x(0) = x0 に対する零入力応答 y(t) の描画 (時間指定あり)
y = initial(sys,x0,t); x(0) = x0 に対する零入力応答 y(t) の計算

Vc = ctrb(A,B)
可制御性行列 Vc = B AB · · · An−1 B の計算⎤⎡
C⎢ CA ⎥⎥⎢..
Vo = obsv(A,C)
可制御性行列 Vo = ⎢
⎥ の計算
⎦⎣
.
CAn−1initial(sys,x0)

ẋ(t) = Ax(t)y(t) = Cx(t)=⇒sys = ss(A,[],C,[]);■ 状態空間表現に基づくコントローラ設計
関数名

使用例

説明acker

K = - acker(A,B,p) 極配置法：1 入力 n 次系の制御対象に対し，A + BK の固
有値を p = p1 p2 · · · pn とする u(t) = Kx(t) を設計

place

K = - place(A,B,p) 極配置法：m 入力 n 次系の制御対象に対し，A + BK の固
有値を p = p1 p2 · · · pn とする u(t) = Kx(t) を設計(pi の重複は m を超えてはならない)
K = - lqr(A,B,Q,R) 最適レギュレータ：評価関数
lqr∞

J=0(x(t) Qx(t) + u(t) Ru(t))dtを最小化する u(t) = Kx(t) を設計

care

P = care(A,B,Q,R)

リッカチ方程式

P A + A P − P BR−1 B  P + Q = Oの解 P = P  > 0 を求める