Transcript
Page 1: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

1

MATLAB マニュアル(2003,大内版)

(東北大学 大学院工学研究科電子工学専攻,川又・阿部(正)研究室)

ディジタル信号処理 WEB ページ

http://www.mk.ecei.tohoku.ac.jp/dsptext/

1. MATLABの特徴

2. 起動と終了

3. 簡単な計算

4. m-ファイルの使い方

5. グラフの描き方と印刷

6. 信号処理のための関数

7. MATLABで用いる関数と演算子

8. 参考文献

9. リンク

10. Octave(MATLAB互換フリーソフト)について

1.MATLABの特徴

MATLAB はさまざまな数値計算を簡潔に記述・実行できるプログラミング言語である.とくに,その

名が“Matrix Laboratory”に由来することからわかるように,行列演算を簡潔に記述し,高速に実行

することができる.また,信号処理のための関数が多数用意されており,これらの関数を用いること

で,容易にさまざまな信号処理を実行することができる.さらに,その結果のグラフ化も簡単な命令

で行うことができる.

2.MATLABの起動と終了

MATLAB が使える環境であれば,matlabというコマンドで MATLAB が起動する.

% matlab

MATLAB を終了したいときは,MATLAB のコマンドライン上で exitまたは quitと入力する.

>>exit

3.簡単な計算

MATLAB で計算やグラフの表示などの命令を実行する場合,コマンドラインからの入力によってひと

つずつ命令を実行する方法と,m-ファイルに複数の命令を記述しておいて連続して実行する方法があ

Page 2: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

2

る.後者の m-ファイルを用いた方法は C や他のプログラム言語と同じようなものである.

ここでは,コマンドラインからの入力について説明する.MATLAB を起動すると“>>”という記号が

表示される.以降,この記号のことをプロンプトと呼ぶ.コマンドラインからの入力はこの“>>”に

続いて入力する.

スカラーの計算

単純な計算の例を示す.

例えば,10+20/2-5*3 を計算したいとき(/は割り算,*は掛け算)は

>>10+20/2-5*3

と入力する.ここで return(enter)キーを押すと

ans =

5

と表示される.このようにコマンドは入力後に return(enter)キーを押すことによって実行される.

四則演算の演算順序は普通の数学と同様である.演算順序を変えたいときは,数学と同様でカッコ( )

を用いる.

>>(10*(5-3))/2

ans =

10

次に変数を使った計算について説明する.変数への数の代入は以下のように行う.

>>x=3

このように変数への代入は"="を用いる.このあと

x =

3

と表示され,確かに xに 3が代入されたことがわかる.

もしこのような表示をさせたくないときは

>>x=3;

のように 後に";"を付ける.

代入を行った変数は,次からの計算で使うことができる.例えば

>>x+3

の結果は

ans =

6

となる.

また,

>>x=4;

と入力し,もう一度

>>x+3

Page 3: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

3

を実行すると今度は

ans =

7

となる.

ここで,以前入力したコマンドを入力しなおす場合,カーソルキーの上を押すことで以前のコマン

ドが表示されるので便利である.いままで入力したコマンドは記憶されているので,1 回押せば一つ前

のコマンド,2 回押せば二つ前に入力したコマンドが呼び出される.戻り過ぎた場合は,カーソルキー

の下で一つ先に進む.カーソルキーの上(下)の代わりにコントロールキー(Ctrl キー)を押しながら p(n)

を押してもよい.

また,単に変数の値を知りたいときは

>>x

と入力することで

x =

4

と表示される.もし,まだ定義(代入)していない変数の値を見ようとした場合はエラーメッセージ

がでる.また,MATLAB では大文字と小文字は区別されるので注意すること.すなわち x と X は別な

ものと見なされる.

それまでに定義した変数は

>>who

で見ることができる.定義した変数を削除したいときは clear を用いる.例えば x という変数を削除

したいときは

>>clear x

とする.変数名を省略すると,それまでの全ての変数が削除される.

次に,MATLAB にある関数のなかで,一般的な数学でも使うものについていくつか例を示す.

平方根

>>sqrt(9)

ans =

3

三角関数

>>sin(pi/6)

ans =

0.5000

MATLAB では piは特に定義しなければ円周率を表す.

対数関数

>>log10(5)

Page 4: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

4

ans =

0.9660

など,さまざまな関数がある.このように関数はカッコ( )の中に一つまたは複数の引数を与えて用い

る.

関数は,その使い方を helpを用いてみることができる.

例 sin という関数について調べたいとき

>>help sin

MATLAB は複素数も実数と同様に計算することができる.虚数単位には iまたは jを用いる.

( 新の MATLAB では,入力時の虚数単位として「1i」を用いることになった.)

>> (3+1i)*(2-3i)

ans =

9.0000-7.0000i

また,conj(x)で xの複素共役を出力することもできる.

ベクトルの計算

ここまでの計算はすべてスカラーについて行ってきた.ここからは,MATLAB の特長でもある行列の

計算について説明する.MATLAB では m 行 n 列(m,n は自然数)の行列を扱うことができる.

まず,1 行 n 列のものについて説明する. 1 行 n 列の行列は,数列やベクトルと言った方がわかり

やすく,ここではベクトルと表す.

例えば

[1 3 5 7 9 11]

のようなものである.MATLAB ではこのベクトルを一つの変数で表すことができる.

>>A=[1 3 5 7 9 11]

A =

1 3 5 7 9 11

これでベクトル Aが定義された.ベクトル(行列)はこのように[ ]で囲んで表す.

Aの 3 番目の要素を知りたいときは

>>A(3)

ans =

5

とする.また,Aのサイズを知りたいときは

>>size(A)

Page 5: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

5

ans =

1 6

ここで 1は行の数,6は列の数である.すなわち Aは 1行 6列の行列だということがわかる.

Aの 3 番目の要素を変更したいときは

>>A(3)=4;

とする.

気をつけなければならないのは,行列の要素の番号が 1 から始まっているということである.C 言

語などでは配列の 初の要素が 0,2 番目を 1 として数えているので,特に他のプログラミング言語を

使っている人は注意すること.

ベクトルは要素ごとの演算ができる.

>>A=[1 3 5 7 9];

>>B=[2 4 6 8 10];

>>A+B

ans =

3 7 11 15 19

>>B-A

ans =

1 1 1 1 1

>>B.*A

ans =

2 12 30 56 90

>>A./B

ans =

0.5000 0.7500 0.8333 0.8750 0.9000

このように要素ごとに独立に演算ができる.ここで,掛け算と割り算のときに *と/ではなく.*と./

を使っていることに注意すること.

また,sqrtなどの関数の引数にベクトルを与えた場合,

>>sqrt(A)

ans =

1.0000 1.7321 2.2361 2.6458 3.0000

のように各要素について独立に計算する.スカラーの計算で用いる関数のほとんどはこのように一度

に複数の計算を行うことができる.

Page 6: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

6

このことを利用して,xが 0, 0.1, 0.2, ..., 3.0, 3.1のときの sin(x)の値を求めてみる.

xに対して 0.1刻みで 0から 3.1までの代入を行うのは非常に面倒である.このようなときは":"を使っ

て自動化することができる.

>>x=0:0.1:3.1;

これで xは 0から 0.1刻みで 3.1 まで,32 個の要素をもつ配列になった.

このように 1 番目の要素の数 : 増分 : 最後の数として記述することで労力が削減できる.このと

き増分を省略して,例えば 2:5とすると自動的に増分は 1とされる.

>>z=2:5

z =

2 3 4 5

また,10:-1:5というように増分を負の数にすることも可能である.

xに代入したら,次に sin(x)を求める.

>>sin(x)

結果は長いのでここには示さないが,32個の xに対して 32 個の sin(x)の値が計算されたはずである.

行列演算

前節ではベクトルを扱ったが,ここからは行列を使った演算について説明していく.

3 行 3 列の行列は以下のように代入する.

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

A =

1 2 3

4 5 6

7 8 9

このように同じ行にある要素は空白で区切り,行と行は";"で区切る. m 行 n 列(m, n は自然数)の

行列も同様である.

行列の場合も先に説明したベクトルと同様, A+B, A-B, A.*B, A./Bで各要素の計算ができる.他に

もベクトルと同様,

>>A(3,2)

として 3 行 4 列目の要素を出力したり,

>>size(A)

で行列のサイズを出力することができる.

スカラーで用いている関数も同様に行列に対して使用することができる.

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

>>sqrt(A)

Page 7: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

7

ans =

1.0000 1.4142 1.7321

2.0000 2.2361 2.4495

2.6458 2.8284 3.0000

全ての要素が同じ行列をつくるには onesや zerosを使うと便利である.

>>ones(3,4)*2

ans =

2 2 2 2

2 2 2 2

2 2 2 2

2 2 2 2

行列のなかのある行または列を行ベクトルまたは列ベクトルとして出力したいときは,

例 2 行目を行ベクトルとして出力したいとき

>>A(2,:)

例 3 列目を列ベクトルとして出力したいとき

>>A(:,3)

とする.

"'"を付けると転置行列を出力する.

>>A'

ans =

1 4 7

2 5 8

3 6 9

行列の積の計算は"*"を用いて"C*D"と表す.ここで Cが n 列なら Dは n 行でなければならない.

>>C=[1 2;3 4];

>>D=[1 2 3;4 5 6];

>>C*D

ans =

9 12 15

19 26 33

Page 8: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

8

4.m-ファイルの使い方

MATLAB で複数の命令を実行したい場合,m-ファイルを使うと便利である.m-ファイルとは,他の

プログラミング言語のように複数の命令を記述したテキストファイルである.m-ファイルを使うと,

コマンドラインで実行していた命令を連続して実行でき,また,途中の処理を変更して 初から実行

しなおすことも容易になる.

m-ファイルは普通のテキストファイルであり,適当なエディタを使って作成することができる.

UNIX では Mule などが一般的である.

例として,2 つのベクトルの内積を求めるプログラムを以下に示す.

v1=[3 5]; %ベクトル 1

v2=[-6 2]; %ベクトル 2

v1*v2' %ベクトル 1とベクトル 2の内積を計算する

この 3 行だけのテキストファイルを作成する.ファイル名を決める際,拡張子は必ず m とする.ここ

ではこのファイルを naiseki.mとする.

ファイルを保存したら,実際に MATLAB からこのファイルを開いて実行する.このとき,カレント

ディレクトリは m-ファイルがあるディレクトリになっていなければならない.(ディレクトリについ

ての説明は UNIX(または MS-DOS)の本を参考にすること.Windows ではディレクトリではなくフ

ォルダと呼ばれているが同様のものである.)

カレントディレクトリは

>>cd

と入力することで調べることができる.カレントディレクトリを変更するには

>>cd m-ファイルがあるディレクトリ

と入力する.

作成した m-ファイルを実行するには,ファイル名から拡張子をとったものを入力する.すなわち,

ファイル名がそのままコマンド名になる.

>>naiseki

結果として

ans =

-8

と出力される.

このプログラムの内容を説明する.1 行目と 2 行目で v1 と v2 を定義している.“%”という記号は,

コメントを記述するために用いる.その行の“%”’以降の文字はコメント文とみなされて実行されない.

3 行目でベクトル(行列)の積を計算している.ここで v2を 1 行 2 列の行列から 2 行 1 列の行列に転

置するため “'”を用いている.また 3 行目は,結果を画面に表示するために命令のあとに“;”をつ

けていない.

5.グラフの描き方と印刷

MATLAB は様々な処理の結果を簡単な命令でグラフ化することができる.ここでは基本的なグラフの

Page 9: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

9

表示方法について説明する.

まず,例として sin のグラフを表示するために以下のような m-ファイルを作成する.

x=0:0.1:3.1;

plot(sin(x))

このプログラムを実行すると(m-ファイルの作成と実行は「m-ファイルの使い方」を参照),新たにウ

ィンドウ(figure ウィンドウ)が開かれ,sin のグラフが描かれる.

ここで横軸は xの値に対応していない.横軸が 1 のところに xの第 1 要素(0)に対する sin(x)の値が,

横軸が 2 のところに xの第 2 要素(0.1)に対する sin(x)の値がプロットされている.横軸と xの値を

対応させるには

plot(sin(x))

部分を

plot(x,sin(x))

に変更する.すなわち,1 番目の引数で横軸,2 番目の引数で縦軸の値を指定する.

この計算では x について 32 点でしか計算をしていないが,MATLAB はその点と点の間を結んでプロッ

トする.

MATLAB にはグラフ関連のコマンドが数多く用意されているが,そのなかでも基礎的なものについて

いくつか説明する.

説明のために以下のような m-ファイルを作成する.

x=0:0.1:3.1;

y1=sin(x); %サイン関数

y2=cos(x); %コサイン関数

hold on %重ね書きを許可する

plot(x,y1)

stem(x,y2)

axis([0 3.1 -1.2 1.2]),grid %軸の範囲設定,格子を表示

xlabel('x'),ylabel('y1,y2') %軸にラベルを付ける.

hold off

このプログラムを実行すると sin と cos 関数の一部が同じグラフ上に描かれる.もし,以前に描いたグ

ラフなどの上に上書きした場合は

>>clf

としてからもう一度実行してみる.clfは figure ウィンドウをクリアする命令である.

このプログラムについて説明する.hold onはこれ以降のプロットを上書きして描くことを許可する.

これによって stemは前に実行された plotを消さずに同じグラフ上に上書きされる.

axisは横軸と縦軸の範囲を設定する.これは axis([横軸最小値 横軸最大値 縦軸最小値 縦軸最大

値])と指定する.

また,axisと gridの間にある","は命令を区切るために用いている.このように","を使うことによって

1 行に複数の命令を記述することができる.

grid はグラフ上に格子状の目盛りをつける.

xlabel,ylabelは軸にレベルを付けるのに使う.例えば横軸が時間を表す場合には,xlabel('Time')

Page 10: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

10

などとする.

グラフの印刷

表示されているグラフを印刷するには,コマンドラインから

>>print

とすればよい.

6.信号処理のための関数

MATLAB には,信号処理に関連した関数が多数用意されている.ここではそのうちのいくつかについ

て説明する.

conv

2 つのベクトルのたたみこみを計算する関数.

[3 4 -1]と[3 1 6 2]のたたみこみを計算して yに出力する.

y(1)=3×3 = 9

y(2)=3×1 + 4×3 = 15

y(3)=3×6 + 4×1 + (-1)×3 = 19

y(4)=3×2 + 4×6 + (-1)×1 = 29

y(5)= 4×2 + (-1)×6 = 2

y(6)= (-1)×2 = -2

入力

A=[3 4 -1];

B=[3 1 6 2];

y=conv(A,B)

出力

ans =

9 15 19 29 2 -2

filter

入力ベクトル Xに対してフィルタリングを行った結果を yに出力する.フィルタは次のような

差分方程式の係数ベクトルとして与える.

A(1)×y(n) = -A(2)×y(n-1)-A(3)×y(n-2)- ... -A(na+1)×y(n-na)

+B(1)×x(n)+B(2)×x(n-1)+B(3)x×(n-2)+ ... +B(nb+1)×x(n-nb)

入力

A=[1 -0.5];

Page 11: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

11

B=[0.5];

x=[1 zeros(1,10)];

y=filter(B,A,x)

出力

y =

Columns 1 through 7

0.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.0078

Columns 8 through 11

0.0039 0.0020 0.0010 0.0005

freqz

ディジタルフィルタの周波数応答を出力する.フィルタの係数ベクトルは filterと同様に与え

る.

入力

A=[1 -0.5];

B=[0.5];

W=-pi:0.01:pi;

H=freqz(B,A,W);

magH=abs(H);

plot(W,magH);

出力

振幅特性のグラフが表示される.

Hは複素数のベクトルである.ここでは absを用いて振幅特性を表示している.

7.MATLABで用いる関数と演算子

(教科書"MATLAB 対応 ディジタル信号処理"の中で用いているもののみ抜粋)

定数

pi 円周率

eps 浮動小数点相対精度

演算子と特殊キャラクタ

数値演算子

+ 加算.行列の場合は要素ごとの加算.

Page 12: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

12

- 減算.行列の場合は要素ごとの減算.

* 乗算.行列の場合は行列の積を出力.

/ 除算.行列の場合は行列の右除算.

.* 行列の要素ごとの乗算.

./ 行列の要素ごとの除算.

^ ベキ乗.行列の場合は行列のベキ乗(正方行列).

.^ 行列の要素ごとのベキ乗.

比較演算子

== 等号

~= 否定

<, >, <=, >= 比較演算子

論理演算子

& 論理積

| 論理和

~ 否定

特殊演算子

: ベクトルを生成する.例 1:5 , 4:2:20

; 結果を表示しない.または,関数と関数を区切る.

... 次の行に続けて記述する.

% コメント

.' 転置行列を出力する. 例 A.'

関数

abs abs(x):xの絶対値を出力する.

angle angle(h):複素数 hの位相角(ラジアン単位)を出力する.

axis axis([XMIN XMAX YMIN YMAX]):グラフの x 軸と y 軸の範囲を指定する.

bilinear [NUMd,DENd]=bilinear(NUM,DEN,Fs):双一次 z 変換を行う.

blackman blackman(N):Blackman 窓を長さ Nの列ベクトルとして出力する.

boxcar boxcar(N):要素が全て 1 の列ベクトルを出力する.

butter [B,A]=butter(N,Wn):N次の低域通過ディジタル Butterworth フィルタを設計する.

buttord buttord(Wp,Ws,Rp,Rs):通過帯域 Wp の損失が Rp [dB]以下で,遮断帯域 Wsに少なくと

も Rs [dB]の減衰をもつという条件を満たすディジタル Butterworth フィルタの 小次

数 Nを出力する.

ceil ceil(x):xより大きく も xに近い整数を出力する.

circconv circconv(h,x):ベクトル hとベクトル xの循環たたみこみを計算する.自作の関数.

colormap colormap(gray):figure ウィンドウのカラーマップをリセットする.

colormap([0 0 0]):白黒表示させる.

compose compose(f,g,x,z):Symbolic Math Toolbox の関数.関数 f(x)の xに関数 g(z)を

代入する.

conv c=conv(a,b):ベクトル aと bのたたみこみを計算する.

Page 13: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

13

conv2 C=conv2(A, B):行列 Aと Bの 2 次元のたたみこみを計算する.

cos cos(x):xの余弦値を出力する.

cot cot(x):xの余接値を出力する.

direct ディジタルバタワース低域フィルタを直接設計法で設計する.自作の関数.

disp disp(X):配列 X を表示する.Xが文字列ならば,その文字列を表示する.

double double(x):xを倍精度に変換して出力する.

error error('message'):エラーメッセージを出力し,処理を中止する.

exp exp(x):xの指数関数を出力する.

fft fft(x):ベクトル xの高速フーリエ変換を出力する.

fft2 fft2(X):行列 Xの 2 次元フーリエ変換を出力する.

fftshift fftshift(x):ベクトル xの右半分と左半分を入れ替えて出力する.

figure figure:新しい figure ウィンドウを作成する.

filter y=filter(b,a,x):ベクトル Xのデータをフィルタリングした結果を出力する.

filter2 Y=filter2(B,X):係数行列 Bで与えられる 2 次元 FIR フィルタを用いて Xをフィルタ

リングする.

fir1 fir1(N,Wn):N次の低域通過ディジタル FIR フィルタを設計する.

fix fix(x):xの小数点以下を切り捨てた値を出力する.

flipud flipud(X):行列 Xの行を反転させた結果を出力する.

floor floor(x):xより小さく も xに近い整数を出力する.

for for と endにはさまれた命令を一定回数繰り返し実行する.

freqs freqs(b,a,w):分子の係数ベクトルが b,分母の係数ベクトルが aで与えられるアナロ

グフィルタの周波数応答を出力する.

freqz freqz(b,a,w):フィルタの周波数応答を出力する.

freqz2 freqz2(X):2 次元信号の周波数特性を出力する.

freqztrans freqztrans(b,a,ftype,thetac,wc):Symbolic Math Toolbox を用いて周波数変換を行う.

function 新たな関数を定義する.

gray gray:グレイスケールのカラーマップを出力する.

grid grid: グラフに格子状の目盛りを表示する.

hamming hamming(N):Hamming 窓を長さ Nの列ベクトルとして出力する.

hanning hanning(N):Hanning 窓を長さ Nの列ベクトルとして出力する.

hold hold on:この命令以降のプロット命令を同一のグラフ上に上書きする.

if 条件分岐を行う.

ifft ifft(x):xの逆高速フーリエ変換を計算する.

imag imag(x):複素数 xの虚部を出力する.

imnoise J=imnoise(I,TYPE,...):行列 Iに格納された画像に対して,各種のノイズを付加する.

impinvar impinvar(B,A,Fs):係数ベクトル Bと係数ベクトル Aで与えられるアナログフィルタの

インパルス応答と等しいインパルス応答をもつディジタルフィルタの係数ベクトル

BZ,AZを出力する.

imread A=imread(FILENAME,FMT):FILENAMEで指定した画像ファイルを行列 Aに読み込む.

imresize imresize(A,s):行列 Aに格納された画像のサイズを s倍にして出力する.

imshow imshow(I,[LOW HIGH]):行列 Iに格納された画像を表示する.

Page 14: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

14

iztrans iztrans(f):Symbolic Math Toolbox の関数.関数 fの逆 z 変換を計算する.

kaiser kaiser(N,beta):betaをパラメータする Kaiser 窓を長さ Nの列ベクトルとして

出力する.

legend legend(string1,string2,string3, ...):ひとつの figure ウィンドウ上に複数のグラフ

を描いたときに各グラフのラベルを表示する.

length length(x):ベクトル xの長さを出力する.

linspace linspace(x1,x2,n):x1と x2の間を等間隔に区切った n個の要素をもつベクトルを

出力する.

log10 log10(x):xの 10を底とした対数を出力する.

log2 log2(x):xの 2を底とした対数を出力する.

max max(x):xの 大要素を出力する.

mesh mesh(X,Y,Z):メッシュ状の三次元グラフを表示する.

meshgrid meshgrid(x,y):(ベクトル yの長さ)行(ベクトル xの長さ)列の行列を 2 つ出力する.

一方は全ての行がベクトル xと同じであり,もう一方は全ての列がベクトル yを転置

したものと同じである.

min min(x):xの 小要素を出力する.

mod mod(x,y):xを y で割ったあまりを出力する.

myconv myconv(h,x)はベクトル hとベクトル xのたたみこみを計算する.

MATLAB の既存の関数の convと同じ計算をする.自作の関数.

mydft mydft(x):ベクトル xの離散フーリエ変換を計算する.自作の関数.

myfft myfft(x):ベクトル xの高速フーリエ変換を計算する.自作の関数.

myfilter myfilter(b,a,x):MATLAB の既存の関数 filterと同じ計算を行う.自作の関数.

numden numden(A):Symbolic Math Toolbox の関数.有理多項式 Aの分子の多項式と分母の多

項式を出力する.

ones ones(m,n):要素がすべて 1 の m行 n列の行列を出力する.

pcolor pcolor(X,Y,Z):3 次元のグラフを濃淡の変化を用いて平面上に表示する.

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

plot(x,y,'o')のようにプロットのスタイルを変えることもできる.

plot3 plot(x,y,z):3 次元プロットを表示する.

poly2sym poly2sym(b,z):Symbolic Math Toolbox の関数.係数ベクトルが bで定義される多項

式を出力する.この多項式の変数は zで設定する.

prod prod(X):Xがベクトルときは各要素の積を出力する.Xが行列のときは,各列の積を

行ベクトルとして出力する.

real real(x):xの実部を出力する.

roots roots(C):係数ベクトルが Cである多項式の根を計算する.

shading shading interp:グラフの各格子点間の色を線形に補間する.

simple simple(s):Symbolic Math Toolbox の関数.関数 sを簡略化して出力する.

simplify smplify(S):Symbolic Math Toolbox の関数.式 Sを簡単化し,有理多項式として

出力する.

sin sin(x):xの正弦値を出力する.

sinc sinc(x):xの sinc関数を計算する.

Page 15: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

15

y = sin(pi*x)/(pi*x) x ~= 0 の場合

= 1 x == 0 の場合

size size(X):行列 Xの大きさを出力する.

sqrt sqrt(x):xの平方根を出力する.

stem stem(x,y):xを横軸,yを縦軸の値としてデータをプロットする.

subplot subplot(m,n,p):figure ウィンドウを m行 n列の小さいグラフに分割し,その中の p番

目のグラフを選択する.

surfl surfl(X,Y,Z):3 次元のグラフを立体的に表示する.

switch 条件にあった caseの内容を実行する.

sym2poly sym2poly(A):Symbolic Math Toolbox の関数.多項式 Aからその係数ベクトルを

出力する.

syms Symbolic Math Toolbox の関数で用いる変数を宣言する.

symsum symsum(s,a,b):Symbolic Math Toolbox の関数.関数 sについて aから bまでの和を

求める.

tan tan(x):xの正接値を出力する.

tf2sos tf2sos(B,A):分子,分母の係数ベクトルが A,Bである伝達関数を 2 次縦続形の伝達関

数として表現し,その係数ベクトルを出力する.

unwrap unwrap(P):位相角 Pの変化の絶対値がπより大きいとき,2πずらして修正する.

view view(AZ,EL):3 次元プロットでの視点を設定する.AZは水平方向,ELは垂直方法の回

転を設定する.

while 条件が成立している間,whileと endにはさまれた命令を繰り返す.

xlabel xlabel('text'):グラフの x軸にラベルを付ける.

ylabel ylabel('text'):グラフの y軸にラベルを付ける.

zeros zeros(m,n):m行 n列の零行列を出力する.

zlabel zlabel('text'):グラフの z軸にラベルを付ける.

zp2tf zp2tf(Z,P,K):零点がベクトル Z,極がベクトル P,利得が Kで与えられる伝達関数の

分子,分母の係数ベクトルを求める.

zplane zplane(Z,p):有理多項式の分子の係数ベクトル Zと分母の係数ベクトル pから零点と

極をプロットする.

ztrans ztrans(f,k,w):Symbolic Math Toolbox の関数.kを変数とする関数 fの z 変換を

求める.

8.参考文献

上坂: MATLAB プログラミング入門,牧野書店,2000

R. Vaillancourt,芦野: はやわかり MATLAB,共立出版,1997

小国: MATLAB の利用と実際 -現代の応用数学と CG-,サイエンス社,1995

小林: MATLAB ハンドブック,秀和システム,1998

Page 16: MATLABマニュアル(2003)ver5 - Kawamata … る.後者のm-ファイルを用いた方法はC や他のプログラム言語と同じようなものである. ここでは,コマンドラインからの入力について説明する.MATLAB

16

9.リンク

MathWorks 社のホームページ: https://jp.mathworks.com/

10.Octave(MATLAB互換フリーソフト)について

Octave は,MATLAB と同じ文法で数値計算が実行できるフリーソフトである.MATLAB と同様に行

列演算を簡単に記述・実行することができる.また,信号処理のための関数も用意されており,さま

ざまな信号処理を容易に実行することができる.Octave と MATLAB の特徴は以下の通りである.

MATLAB は高価格・高機能であり,信号処理や画像処理などの toolbox(ライブラリ)が充実し

ている.

Octave はフリーソフトであるため入手しやすいが,ライブラリは多くない.

Octave については,以下のページを見てほしい.

川又研究室内の Octave の紹介: http://www.mk.ecei.tohoku.ac.jp/dsptext/octave/

Octave 公式ページ(英文): http://www.gnu.org/software/octave/

参考文献(MATLAB のマニュアルは 近でも次々に出版されている)

北本卓也:Octave を用いた数値計算入門,ピアソン・エデュケーション,2002

小国力:MATLAB の利用と実際 -現代の応用数学と CG-,サイエンス社,1995

大石進一:MATLAB による数値計算,培風館,2001

大石進一:Linux 数値計算ツール Tools for Numerical Computation on Linux,コロナ社


Recommended