MATLAB講習会 ディジタル信号処理補講 2015年4月30日 5月1日 MATLAB講習会 阿部正英 川又政征 1 内容 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. なぜ MATLAB か? MATLABの起動と終了 電卓的な使い方,スカラー,ベクトル,行列,複素数の 演算 プログラミングと実行 データの視覚化と印刷 関連書籍とマニュアル 参考ウェブページ デモンストレーション MATLABの入手方法 Octaveについて MATLAB講習会 2 1.なぜ MATLABか? MATLAB = Matrix Laboratory 科学技術計算の標準ツール 信号処理,画像処理,通信,制御,数値計算の実質的世 界標準 スカラー,ベクトル,行列,複素数の数式風の簡潔な記 述と演算が可能である. 信号処理のための豊富な関数を準備している. 計算結果の視覚化に優れている. MATLAB講習会 3 MATLABはどれくらい簡単か? (1~10の和を求める場合) C言語では include <stdio.h> void main(void) { int result; int num; num = 10; result = sum(num); printf("%d¥n", result); } int sum(int num) { int sum = 0; int i; MATLABでは N =10 x = 1:N result = sum(x) もっと簡単にすると result = sum(1:10) for(i = 0; i <= num; i++) { sum = sum + i; } return sum; } MATLAB講習会 4 2.MATLABの起動と終了 起動(計算機大演習室の場合): クリック MATLAB講習会 5 2.MATLABの起動と終了 終了 : MATLABのプロンプトに exit または quitとタイプ >> exit または >> quit MATLAB講習会 6 デスクトップ環境 Command Window (主にここを使う) Workspace (定義された変数の一覧) MATLAB講習会 7 注意事項 計算機大演習室のMATLABを利用して ログアウトするとき, すべてのMATLABのウィンドウを閉じてから, ログアウトすること MATLAB講習会 8 MATLABの基本的動作 1. 2. 3. 4. MATLABは,命令を一つずつ解釈・実行す る対話型システム プロンプト(>>)を表示する. 命令(あるいはM-ファイル)を一つ読みこむ. 命令を解釈し,実行する. 1.にもどる. MATLAB講習会 9 3.電卓的な使い方 コマンドラインからの命令を一つずつ入力するこ とで,計算やグラフの表示などの命令が実行さ れる . 10+20/2-5×3 を計算したいとき >> 10+20/2-5*3 と入力する.ここで return(enter) キを押すと ans = 5 MATLAB講習会 10 代入 >> x=3 x= 3 >> x=3; %表示しないときに ; をつける >> x+3 ans = 6 (注: %以下はMATLABの注釈であるため,実行 のためにタイプする必要はない) MATLAB講習会 11 複素数 複素数も実数と同様に計算することができる. 虚数単位には i または j を用いる. >> (3+1i)*(2-3i) 注意: ans = 最新のMATLABでは,入力 時の虚数単位として「1i」を 9.0000-7.0000i 用いることになった. 左の例では >> x=1+2i; y=3+4i; (3+1i)*(2-3i) と入力する. >> z=x+y z= 4.0000 + 6.0000i MATLAB講習会 12 ベクトル 変数の宣言をせずにベクトルを利用できる. >> x=[1 3 5] %ベクトルxの定義 x= 135 >> x(3) %xの3番目の要素 ans = 5 >> size(x) %xのサイズ ans = 1 3 MATLAB講習会 13 ベクトルのインデックスに ついての注意 MATLABのベクトルのインデックスは 1から始まる.0から始まるのではない. x(0), x(1), x(2), x(3), x(4), … 行列の場合も X(1,1) から始まる. MATLAB講習会 14 関数 >> sqrt(9) % 平方根 ans = 3 >> sin(pi/6) %正弦関数,ただし pi は円周率 ans = 0.5000 >> log10(5) % 常用対数 ans = 0.9660 MATLAB講習会 15 ベクトルの演算 >> x=[1 3 5]; >> y=[2 4 6]; >> x+y ans = 3 7 11 %xへ代入 %yへ代入 %加算 >> y-x ans = 1 1 1 %減算 >> x.*y ans = 2 12 30 %要素ごとの乗算 MATLAB講習会 16 ベクトルの演算 >> x./y %要素毎の除算 ans = 0.5000 0.7500 0.8333 >> sqrt(x) %平方根 ans = 1.0000 1.7321 2.2361 MATLAB講習会 17 ベクトルの代入 >> x=0:0.5:3; %初期値:増分:最終値 >> y=1:5 %初期値:最終値 ただし増分1 y= 12345 >> z=10:-1:5; %負の増分 MATLAB講習会 18 行列の代入 >> A=[1 2 3; 4 5 6; 7 8 9] A= 123 456 789 >> A(3,2) %Aの3行2列の要素 >> size(A) %Aのサイズ MATLAB講習会 19 行列の要素ごとの演算 >> A=[1 2 3; 4 5 6; 7 8 9 ]; %代入 >> sqrt(A) %Aの各要素の平方根 ans = 1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458 2.8284 3.0000 MATLAB講習会 20 行列の演算 A+B A-B A*B A/B A.*B A./B A’ inv(A) %和 %差 %積 %AにBの逆行列をかける %要素ごとの積 %要素ごとの除算 %転置 %Aの逆行列 MATLAB講習会 21 特別な行列 ones(m,n) %要素がすべて1のmxn行列 zeros(m,n) %要素がすべて0のmxn行列 eye(m,n) %単位行列 A(m,:) %第m行の行ベクトル A(:,n) %第n列の列ベクトル MATLAB講習会 22 関係演算子による要素の比較 関係演算子による実行結果は,0,1のロジカル データとなる.つまり,要素が関係式を満たして いれば1を,満たしてなければ0を出力する. A==B A~=B A<B A<=B A>B A>=B AとBは等しい AとBは等しくない AはBより小さい AはBより小さいか等しい AはBより大きい AはBより大きいか等しい MATLAB講習会 23 関係演算子による要素の比較 >> n = [-2 -1 0 1 2 3]; >> delta = n==0 %nの要素中から0に等しい %要素を検出してdeltaに代入 delta = 0 0 1 0 0 0 %検出結果 >> u0 = n>=0 u0 = 0 0 1 %nの要素から0以上の要素を %検出してu0に代入 1 1 1 %検出結果 MATLAB講習会 24 文字列 変数とベクトル,行列に文字列も入れることができる. >> x = 'Hello World' x= Hello World >> A = ['Digital' 'Signal' 'Processing']; >> A(1) ans = D >> A(5) ans = t MATLAB講習会 25 Help! 関数などの説明がほしいときは help >> help sin sin - ラジアン単位の引数の正弦 この MATLAB 関数 は、X 要素の正弦を返します 。関数 sin は、配列を要素単位で計算します。この 関数は、実数入力と複素数入力の両方を受け入れ ます。 (以下省略) MATLAB講習会 26 Help! 単語をさがしたいときには lookfor >> lookfor fourier fft fft2 fftn ifft (以下省略) - Discrete Fourier transform. - Two-dimensional discrete Fourier Transform. - N-dimensional discrete Fourier Transform. - Inverse discrete Fourier transform. その他に helpwin と doc がある. MATLAB講習会 27 4.プログラミングと実行 プログラミングのために,M-ファイルを用いる. M-ファイルはコマンドや関数を実行したい順に記 述したテキスト形式のファイル(拡張子: .m)であ り,MATLAB付属のエディタを使って作成する. M-ファイルに,以下の2種類の形式がある. スクリプトM-ファイル: コマンド・関数をまとめて処理 する. ファンクションM-ファイル: 入力引数と出力引数を伴 うユーザ定義の関数を作成する.入出力引数の関係 を記述した function で始まる関数宣言の行が必要. MATLAB講習会 28 エディタの起動方法 新規のM-ファイルを作成 する場合はeditコマンドを 実行し,エディタを起動す る. >> edit 指定したM-ファイルをエ ディタで開くためには,次 の書式で実行する. コマンドウィンドウの上部が上のよう なエディターのウィンドウとなる >> edit filename MATLAB講習会 29 制御文 MATLABでは多くのプログラミング言語で使用される制御 文を使うことができる. 代表的な制御文 for 指定回数の繰り返しステートメント while 不定回数の繰り返しステートメント if , elseif, else 条件実行ステートメント switch, case 式に基づき、case文で実行を切り替え MATLAB講習会 30 スクリプトM-ファイル (****.mという拡張子のテキストファイル) スクリプトM-ファイルを使うことで,一連のコマン ド・関数をまとめて処理することができる. 1~10までの和を求めるスクリプトM-ファイルの 例:ファイル名 keisan.m ソースリスト clear all x=0; for k=1:10 x=x+k; end; x MATLAB講習会 31 スクリプトM-ファイルの実行 スクリプトM-ファイルを実行するためには, Command Windowで単に拡張子(.m)なしで ファイル名を入力する. スクリプトM-ファイル:keisan.mの実行 >> keisan x= 55 MATLAB講習会 32 ファンクションM-ファイル ファンクションM-ファイルを使うことで,入力引数と出力引 数を伴う,ユーザ定義の関数を作成することができる. 三辺の長さ a, b, c が与えられた三角形の面積を求める 関数 sankakuの例 ファンクションM-ファイル: sankaku.m function [x] = sankaku(a,b,c) s=(a+b+c)/2; x = sqrt(s*(s-a)*(s-b)*(s-c)); MATLAB講習会 33 ファンクションM-ファイルの実行 ファンクションM-ファイルを実行するためには, スクリプトM-ファイルあるいはCommand Window から呼び出す. >> a=5; b=4; c=3 >> menseki = sankaku(a,b,c) menseki = 6 MATLAB講習会 34 5.データの視覚化と印刷 MATLABはデータの視覚化のための豊富な関数を持って いる. plot y=f(x)の線形プロット stem y=f(x)の棒状のプロット semilogx 片対数プロット semilogy 片対数プロット loglog 両対数プロット title グラフのタイトル xlabel, ylabel 座標軸のラベル axis 座標軸の範囲 grid グラフの格子 MATLAB講習会 35 プロットの例 t=0:0.01:2*pi; y = sin(t); plot(t,y) title('Example of Plot') xlabel('Time t') ylabel('y=sin(t)') axis([0 2*pi -1.5 1.5]) grid MATLAB講習会 36 印刷 印刷したいウィンドウを選択し,メニューの ところで,プリンタアイコンをクリックする. グラフの場合は,グラフの左上のプリンタアイ コンをクリックする. エディターの場合は,そのウィンドウを選択し てから,左上のプリンタアイコンをクリックする. コマンドウィンドウの場合は,印刷したい範囲 を選択し,右クリックして「選択を印刷」を選ぶ. MATLAB講習会 37 6.講義のウェブページ 川又・阿部研究室のページ http://www.mk.ecei.tohoku.ac.jp/dsptext/ 教科書中のプログラムのソースリストがダウン ロード可能. ディジタル信号処理のレポートを作成するため には,このページをみれば十分である. MATLAB講習会 38 7.関連書籍と関連のウェブページ 関連書籍 工学部生協で様々なものが売っているの で見て下さい. MathWorks社(開発元)のホームページ MATLABと関連製品の紹介,使い方,関連 書籍など http://www.mathworks.co.jp/ MATLAB講習会 39 8.デモンストレーション >> demo 上のようにタイプす ると,MATLABのデモ を見ることができる. デモには,MATLABの 使い方,数値計算, グラフィックス,ゲーム などの多数の例があ る. MATLAB講習会 40 9.MATLABの入手方法 MATLAB 学生版ソフトウェア (日本語版)が販売されている. 大学生協で注文 本体価格8,950円(税別) 多数の重要なToolboxを含み,機能が豊富な製 品. https://www.mathworks.co.jp/programs/nrd/buy -matlab-student.html?s_eid=ppc_6435 MATLAB講習会 41 10.Octaveについて Octaveは,MATLABとほぼ同じ文法で数値計算が実行 できるフリーソフト MATLABは高機能・高価格 Octaveは無料,しかしライブラリは少ない. Octaveについては,以下のページを見てほしい. 川又研究室内のOctaveの紹介: http://www.mk.ecei.tohoku.ac.jp/dsptext/octave/ Octave公式ページ(英文): http://www.gnu.org/software/octave/ MATLAB講習会 42 最後に: MATLABプログラミングの極意 見る前に跳べ. Leap Before You Look W. H. Auden 考える前に探せ. Find Before You Think M. Kawamata まず探せ.なければ考えよ. MATLABには多数の優れた関数がある. ループをできるだけ使うな 右の例はどっちが簡単? MATLAB講習会 x=0; for k=1:10 x=x+k; end; x x = sum(1:10) 43 Do you speak MATLAB? http://www.mathworks.com/programs/ltc/ltcad.html?s_cid=ad_ltc_matlab MATLAB講習会 44
© Copyright 2025 ExpyDoc