1.3 ヘルプの参照関数やコマンドの使い方, 各種機能の使用方法等について情報が欲しいときには, オンラインヘルプ機能を使う ( 最も正確な情報が得られる ). 調べたい情報の内容によって, 下記の方法がある. ブラウザを開き MATLAB のオンラインドキュメントを表示する

Similar documents
Microsoft PowerPoint - MATLABの使い方.ppt

Microsoft Word - scilab_intro.doc

MATLABクイックスタート

matlab_basic.pptx

理工学図書館後期 LS 講習会 きれいなグラフを作ろう! gnuplot 入門

PowerPoint Presentation

Microsoft Word - 18環設演付録0508.doc

PowerPoint Presentation

PowerPoint プレゼンテーション

このうち ツールバーが表示されていないときは メニューバーから [ 表示 (V)] [ ツールバー (T)] の [ 標準のボタン (S)] [ アドレスバー (A)] と [ ツールバーを固定する (B)] をクリックしてチェックを付けておくとよい また ツールバーはユーザ ( 利用者 ) が変更

C#の基本

第4回

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

JavaScriptで プログラミング

Matlab講習会

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

デザイン戦略(コンピュータアニメーション) 2009年度春学期

コンピュータグラフィックス基礎              No

数量的アプローチ 年 6 月 11 日 イントロダクション データ分析をマスターする 12 のレッスン ウェブサポートページ ( 有斐閣 ) 水落研究室 R http:

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

プログラミング基礎

CONTENTS マニュアルの表記... S01-02_01 1.DataNature Smart 全体概要図... S01-02_11 2. 基本操作... S01-02_ ジョブの作成... S01-02_21 加工条件設定... S01-02_21 Step1: 処理対象データの指

分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の

PowerPoint プレゼンテーション

スライド 1

情報処理概論(第二日目)

プログラミング実習I

板バネの元は固定にします x[0] は常に0です : > x[0]:=t->0; (1.2) 初期値の設定をします 以降 for 文処理のため 空集合を生成しておきます : > init:={}: 30 番目 ( 端 ) 以外については 初期高さおよび初速は全て 0 にします 初期高さを x[j]

プレポスト【問題】

「統 計 数 学 3」

Microsoft Word - gnuplot

Microsoft Word - VB.doc

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

PowerPoint プレゼンテーション

プログラミング入門1

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft PowerPoint - 講義資料-mlib

Java講座

Moodleアンケートの質問一括変換ツール

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

スクールCOBOL2002

Scilab 勉強会 ( 第 3 回 ) 高橋一馬, 十文字俊裕, 柏倉守 平成 17 年 11 月 15 日 関数 ファイルはエディタを用いて作成する.Scilab にはエディタ SciPad が附属している.SciPad では なく他のエディタを利用してもよい. 作成した関数は Scilab に

スライド 1

Microsoft Word - RefWorksコース doc

< 目次 > 1. 練習ファイルのダウンロード 表計算ソフト Excel の基本 Excel でできること Excel の画面 セル 行 列の選択 セルにデータを入力する ( 半角英数字の場合 )

Excel2013基礎 数式と表編集

memo

PowerPoint プレゼンテーション

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

図 1 アドインに登録する メニューバーに [BAYONET] が追加されます 登録 : Excel 2007, 2010, 2013 の場合 1 Excel ブックを開きます Excel2007 の場合 左上の Office マークをクリックします 図 2 Office マーク (Excel 20

行列、ベクトル

テキストファイルの入出力1

コマンド入力による操作1(ロード、プロット、画像ファイル出力等)

Microsoft Word - Cプログラミング演習(12)

PowerPoint プレゼンテーション

JavaプログラミングⅠ

すると メインメニューと呼ばれる DC さくらのメインウィンドウ部が表示されます ( 下の画面がスクリーンシ ョットです ) メインメニューは ウィンドウ右上の ボタンを押すと閉じます リスト内のアイテムは ダウンロードのタスクを表します ダウンロード状況を把握できます メニュー項目やボタンの説明は

Microsoft PowerPoint - prog04.ppt

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

PowerPoint プレゼンテーション

生成された C コードの理解 コメント元になった MATLAB コードを C コード内にコメントとして追加しておくと その C コードの由来をより簡単に理解できることがよくありま [ 詳細設定 ] [ コード外観 ] を選択 C コードのカスタマイズ より効率的な C コードを生成するベストプラクテ

問題 1 次の文章は Excel の作業環境について述べたものである 下線部の記述の正誤を判断し 解答群 { } の記号で答えよ ただし 下線部以外の記述に誤りはないものとする 設問 1. クイックアクセスツールバーには アプリケーション名やファイル名が表示される 設問 2. 数式バーのる ボタンを

sinfI2005_VBA.doc

Java KK-MAS チュートリアル

ExcelVBA

PowerPoint Presentation

Dahua アプリかんたん手順(2) SmartPlayer操作手順書

Microsoft Word - HowToConvertIdwToDwg.doc

Transcription:

1. MATLAB の基本操作 1.1 起動と終了 MATLAB の起動 : ショートカットアイコンをダブルクリック, あるいは スタートメニュー からプログラム -->MATLAB-->R2015b-->MATLAB R2015b を選択する. MATLAB の終了 : Command Window で,quit コマンド, または exit コマンドを実行, あるいは右上の をクリックする. 1.2 ディスクトップ環境 MATLAB を起動すると, 以下のウィンドウが表示される. 各ウィンドウの機能 : 1. コマンドウィンドウ最も頻繁に使用するウィンドウ. ここから各種コマンド 関数 プログラムを実行する. 2. ワークスペース MATLAB 上に定義された変数の一覧を表示する. 3. カレントディレクトリフォルダやファイルのエクスプローラウィンドウ. 4. コマンド履歴コマンドウィンドウで実行してきたステートメントの履歴を表示する.

1.3 ヘルプの参照関数やコマンドの使い方, 各種機能の使用方法等について情報が欲しいときには, オンラインヘルプ機能を使う ( 最も正確な情報が得られる ). 調べたい情報の内容によって, 下記の方法がある. ブラウザを開き MATLAB のオンラインドキュメントを表示する https://jp.mathworks.com/help/matlab/index.html help コマンドの利用 : help 関数名という形式で実行する. >> help eig eig は, 固有値と固有ベクトルを計算します ( 以下, 省略 ) doc コマンドの利用 : doc 関数名という形式で実行する.Help プラウザで詳細なヘルプが表示される. >> doc eig 機能別の関数 コマンド一覧を調べる場合 : helpwin コマンドを実行すると各ツールの機能別一覧が Help プラウザに表示される. >> helpwin 2. 数値 文字列 行列 MATLAB では, 数値と文字の 2 つのデータタイプを主に扱うことができる. データ型や配列サイズの宣言は不要. 2.1 数値の代入 >> a = 5 + 3*j a = 5.0000 + 3.0000i a という変数に 5+j3 を代入. 虚数単位として i j を認識するので, 変数に i, j は使用しない方が無難. 変数 A に, 変数 a の 5 倍の値を代入.MATLAB では, 変数名の大文字 小文字を区別. >> A = 5 * a A = 25.0000 +15.0000i ステートメントの最後にセミコロンを付けないと Command Window に表示される. 結果を表示したくない場合はセミコロンをつけて実行する. 2.2 文字列の作成 >> a='text' a = text 文字データを定義する場合は, 要素全体をシングルコートで囲む ( ).

2.3 行列の作成と操作 >> B = [ 1 2 3 ; 4 5 6] B = 1 2 3 要素の全体は, 鍵括弧 [ ] で囲む. 各要素はブランク, またはカンマで区切る. 各行はセミコロンで区切る. 行列の転置 : シングルコーテーション ( ) を用いる. >> B ans = 4 5 6 1 4 2 5 3 6 関数による行列の定義 : zeros ゼロ行列 rand 一様分布する乱数 ones 1 行列 randn 正規分布する乱数 eye 単位行列 linspace 線形等間隔ベクトル diag 対角行列 logspace 対数等間隔ベクトル magic 魔方陣 : 等間隔ベクトル 3 行 2 列のゼロ行列 d1 >> d1 = zeros(3,2) d1 = 0 0 0 0 0 0 等間隔ベクトル ( 変数名 = 初期値 : 増分 : 最終値 ) >> d2 = -pi:pi/4:pi d2 = -3.1416-2.3562-1.5708-0.7854 0 0.7854 1.5708 2.3562 3.1416 * 変数 pi は円周率が指定されている予約変数

区間 (0.0,1.0) に一様分布する乱数を 2 行 5 列のベクトルに格納する d4 >> d4 = rand(2,5) d4 = 0.2476 0.5683 0.8756 0.6531 0.6489 0.1380 0.1834 0.4143 0.6359 0.7692 2.4 行列の配列操作 MATLAB では定義されている変数に対して,1) 要素の抽出, 2) 要素の置き換え, 3) 行列の結合, を簡単に実行できる. 1) 要素の抽出 >> A = [ 1 2 3 4 5; 6 7 8 9 10] A = 1 2 3 4 5 6 7 8 9 10 >> m1 = A(2,3) m1 = 8 >> m2= A(2,:) m2 = 6 7 8 9 10 >> m3=a(2, [2 4]) m3 = 7 9 2) 要素の置き換え >> A(2,2)=1 A = 1 2 3 4 5 6 1 8 9 10 >> A(1,:)=10 A = 10 10 10 10 10 6 1 8 9 10 3) 行列の結合 >> m12 = [m1 m2] m12 = 8 6 7 8 9 10 >> m22 = [m12 ; m12] m22 = 8 6 7 8 9 10 8 6 7 8 9 10

2.5 数値演算 2.5.1 四則演算 + 加算.* 要素毎の乗算 - 減算./ 要素毎の除算 * 行列の乗算.\ 要素毎の除算 / 行列の除算 ( 右割り ).^ 要素毎のベキ乗 \ 行列の除算 ( 左割り ) ^ 行列のベキ乗 行列 A,B の加算 乗算 要素ごとの乗算 >> A = [ 1 2 ; 3 4] A = 1 2 3 4 >> B = [ 4 3 ; 2 1] B = 4 3 2 1 >> C=A+B C = 5 5 5 5 >> D=A*B D = 8 5 20 13 >> E=A.*B E = 4 6 6 4

2.5.2 初等数学関数とデータ解析関数 代表的な初等数学関数 sin 正弦 exp 指数 log10 対数 (10 底 ) sqrt 平方根 round 最も近い整数へ丸め 代表的なデータ解析関数 min 最小値 max 最大値 mean 平均値 std 標準偏差 sum 要素の和 初等数学関数は, 入力引数で指定した行列の各要素に対して一括して計算を行う. データ解析関数は, 行列の各列に対して処理を行う. 2.5.3 行列関数 inv 逆行列 lu LU 分解 det 行列式 qr QR 分解 rank 行列のランク eig 固有値 例 ) 線形代数で基本的な問題である連立方程式の解法. ガウスの消去法による解法と逆行列による解法の例 : >> A = [2 3 ; 4 7]; >> b = [5 ; 9]; >> x = inv(a)*b x = 4-1 >> A b ans = 4-1 inv(a)*b は,A b としてもよい. 大規模なサイズの行列に対する演算では処理速度や計算精度の面で演算子 の方が有効.

2.6 比較演算子 A==B A~=B A<B A<=B A>B A>=B A と B は等しい A と B は等しくない A は B より小さい A は B より小さいか等しい A は B より大きい A は B より大きいか等しい 要素同士を比較する場合には比較演算子を使用する. また, 要素を抽出したり置き換えたりする場合の条件判断にも比較演算子が役立つ. この機能によって for 文による繰り返し計算を避けることができる. 比較演算子による実行結果は,0,1 で構成されるロジカルデータとなる. つまり, 要素が関係式を見たしていれば 1( 真 ) を, 満たしていなければ 0( 義 ) を出力する. 例 ) 比較演算子を利用した要素の抽出と置換 >> A = randn(1,6) A = 0.5377 1.8339-2.2588 0.8622 0.3188-1.3077 >> n = abs(a)>= 0.5 n = 1 1 1 1 0 1 >> A1 = A(n) A1 = 0.5377 1.8339-2.2588 0.8622-1.3077 >> A(n) = 0 A = 0 0 0 0 0.3188 0

3. ファイル入出力ファイルからデータを読み込む際は, インポート関数を使う. ファイルフォーマットに応じて下記のインポート関数がある. load dlmread textread xllread imread wavread aviread MAT ファイルおよび, ブランク区切りのファイル 任意の区切り文字で区切られたファイル フォーマット付数値, 文字を含むファイル Excel スプレッドシードファイル 画像ファイル Wave サウンドファイル AVI ファイル 2.8 ファイルへの出力ファイルへデータを出力する際はエクスポート関数を使う. ファイルフォーマットの種類に応じて下記のエクスポート関数がある. save d1mwrite imwrite wavwrite avifile MAT- ファイルおよび, ブランク区切りのファイル 任意の区切り文字で区切られたファイル 画像ファイル Wave サウンドファイル AVI ファイル

4. グラフ作成 4.1 2D プロット関数 y=f(x) をプロットするための MATLAB の関数は, 次のようなものがある. plot semilogx semilogy loglog 線形プロット x 軸対数プロット y 軸対数プロット 両対数プロット 関数 y1=f(x1),y2=f(x2) を同時に表示させたいときは, 以下のようにと入力する. 3 つ以上の場合も, 同様に後ろに続けて記述する. オプション ( カラー, ラインタイプ等 ) は省略可. >> plot(x1,y1, カラーラインタイプマーカー,x2,y2, カラーラインタイプマーカー,...) 表 : 線種オプション色 ( カラー ) 線種 ( ラインタイプ ) 点の種類 ( マーカー ) y 黄色 - 直線. 点 o 丸 m 紫色 : 点線 x クロス + プラス c 水色 -. 一点鎖線 * 星 s 四角 r 赤色 -- 鎖線 d ダイヤ v 下三角 g 緑色 ^ 上三角 < 右三角 b 青色 > 左三角 p 五角形 w 白色 h 六角形 k 黒色 ( 例 ) 関数 plot >> x = 0:0.1:6; >> y1 = x+1; >> y2 = (x-2).^2; >> plot(x, y1,'r-o',x, y2,'k+')

5. プログラミング機能 5.1 プログラミングの基本複数の処理をまとめて実行したい場合や, 大規模な処理を段階的に構築したい場合, プログラミング機能を活用することができる. プログラムは, 拡張子 :m のテキストファイル (M- ファイル ) に書く.M- ファイルは, テキストエディタを使って編集できる.MATLAB はインタープリタなので,M- ファイルの実行時にコンパイルやリンクといった処理を行わない. 5.1.1. エディタの起動方法新規の M- ファイルを作成する場合は,edit コマンドを実行し, エディタを起動する. >> edit または, ファイル (F) 新規作成 (N) M-file (I) を選択する. 以下の M- ファイルエディタが起動される. また, 指定した M- ファイルをエディタで開くには, 次の書式で実行する. >> edit ファイル名 5.1.2. M- ファイルの保存ファイル (F) -> 保存 (S) または, 別名で保存 (A) を選択してファイル名を入力して保存. ファイルを置き換える場合は, ファイル (F) -> 保存 (S) を行う. 5.1.3. M- ファイルの種類と特徴 M- ファイルは, その機能によって, スクリプト M- ファイル, ファンクション M- ファイルの 2 種類の形式に分けることができる. 機能の比較 : スクリプト M- ファイル一連のコマンド 関数をまとめて処理することができる. ファンクション M- ファイル入力引数と出力引数を伴う, ユーザ定義の関数を作成することができる.

記述上の違い : スクリプト M- ファイル特別な記述は必要なし. 実行したいステートメントを順に記述するだけ. ファンクション M- ファイル入出力の関係を記述した function で始まる関数宣言の行が必要. スクリプト M- ファイル, ファンクション M- ファイルともに,M- ファイル内で使われる変数は, ローカル変数と呼ばれ,M- ファイル内にのみ有効です.MATLAB ワークスペースの中の変数とは異なるもの. はじめにスクリプト M- ファイルでプログラムを作成し, アルゴリズム検証が終わったらそれをファンクション M- ファイルにするという流れを探ると, デバッグを含めたトータルの作業効率が向上します. なお,MATLAB のほとんどの関数はファンクション M- ファイルで提供されており, アルゴリズムの確認や編集を簡単に行うことができる. 5.2 スクリプト M-ファイル 5.2.1. スクリプト M-ファイル :example01.m の例 < 処理内容 > 離散時間信号の表示例 1 % example01.m 連続時間 - 離散時間信号 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 clear all; close all; % 変数 図のクリア set(0,'defaultaxesfontname','timesnewroman'); set(0, 'DefaultAxesFontSize',16); set(0, 'DefaultTextFontSize',16); dummy_fs = 100e3; % ダミーのサンプリング周波数 ( 疑似アナログ表現用 ) tend = 3; t = 0: 1/dummy_fs : tend; f = 20; xa = cos(2*pi*f*t); figure(1); subplot(2,1,1) plot(t, xa); % 時刻の範囲設定 % 時刻を (1/dummy_fs) 間隔で設定 % 信号の周波数 (Hz) % アナログ信号の生成 % 図番号を 1 に設定 % 画面を 2x1 に分割し, 位置 1 に設定 %xa を図示 xlabel('time (Sec.)'); ylabel('amplitude'); xlim([0 0.1]); ylim([-1.5 1.5]); fs = 1000; n = 0 : 1 : fix(tend*fs); xd = cos(2*pi*f*n/fs); subplot(2,1,2) stem(n, xd); %x,y 軸のラベル生成 %x,y 軸の表示範囲設定 % サンプリング周波数の設定 (Hz) % サンプル点の設定 % 離散時間信号の生成 % 画面を 2x1 に分割し, 位置 2 に設定 %xd を図示 xlabel('sample num.'); ylabel('amplitude'); xlim([0 0.1*fs]); ylim([-1.5 1.5]);

5.2.2. スクリプト M- ファイルの実行スクリプト M- ファイルを実行するためには,Command Window で単に拡張子 (.m) なしでファイル名を入力するだけ. ツールバーの実行ボタン, あるいは F5 でも実行できる. スクリプト M- ファイル :example01.m の実行 >> example01 実行すると上から順番に各行が処理され, アナログ信号と離散時間信号が表示される. なお, 実行後の Workspace の変数を確認すると, スクリプト M- ファイルの中で処理された変数がすべて定義されているのがわかる. 5.3 ファンクション M- ファイルファンクションは, 入力引数をもち, 出力引数を出力する M- ファイルです.M- ファイルの名前と関数の名前は同じものにします. ファンクション M- ファイルは, それ自身がもつワークスペースの中で変数を使い, MATLAB コマンドプロンプトでアクセスするワークスペースと区別します. 5.3.1 ファンクション M- ファイルの例 M- ファイル mean.m の例を示します. ファイルの内容は, 次のコマンドで表示できる. >> type mean ファイルの内容 : function y = mean(x,dim) %MEAN Average or mean value. % For vectors, MEAN(X) is the mean value of the elements in X. For % matrices, MEAN(X) is a row vector containing the mean value of % each column. For N-D arrays, MEAN(X) is the mean value of the % elements along the first non-singleton dimension of X. % % MEAN(X,DIM) takes the mean along the dimension DIM of X. % % Example: If X = [1 2 3; 3 3 6; 4 6 8; 4 7 7]; % % then mean(x,1) is [3.0000 4.5000 6.0000] and % mean(x,2) is [2.0000 4.0000 6.0000 6.0000].' % % Class support for input X: % float: double, single % % See also MEDIAN, STD, MIN, MAX, VAR, COV, MODE. % Copyright 1984-2009 The MathWorks, Inc. % $Revision: 5.17.4.5 $ $Date: 2010/09/02 13:35:22 $ if nargin==1, % Determine which dimension SUM will use dim = find(size(x)~=1, 1 ); if isempty(dim), dim = 1; end y = sum(x)/size(x,dim); else y = sum(x,dim)/size(x,dim); end ファンクション M- ファイルの最初の行は,function と言うキーワードで始まります. これは, 関数名と引数の順序を与えるものです. この例では, 入力引数は,2 つで, 出力引数は 1 です.

5.3.2 ファンクション M- ファイルの実行 MATLAB 関数では, 引数の数を可変にできます. これは, 通常の他のプログラミング言語の中には見られない,MATLAB 特有のものです. >> A=[1 2 3 4 5]; >> r=mean(a) r = 3 多くの M- ファイルは, この方法で実行します. 出力引数を設定しなければ, 結果は ans にストアされます.2 番目の入力引数が設定されなければ, 関数はデフォルト値を使って計算する.

練習 1 以下のスクリプトファイルを実行し, 周波数 f を変えると離散時間信号がどのようになるか色々と試してみよう. 例えば,20Hz と 980Hz を試してみる. % example01.m 連続時間 - 離散時間信号 clear all; close all; % 変数 図のクリア set(0,'defaultaxesfontname','timesnewroman'); set(0, 'DefaultAxesFontSize',16); set(0, 'DefaultTextFontSize',16); dummy_fs = 100e3; % ダミーのサンプリング周波数 ( 疑似アナログ表現用 ) tend = 3; % 時刻の範囲設定 t = 0: 1/dummy_fs : tend; % 時刻を (1/dummy_fs) 間隔で設定 f = 20; % 信号の周波数 (Hz) xa = cos(2*pi*f*t); % アナログ信号の生成 figure(1); % 図番号を1に設定 subplot(2,1,1) % 画面を2x1に分割し, 位置 1に設定 plot(t, xa); %xaを図示 xlabel('time (Sec.)'); ylabel('amplitude'); %x,y 軸のラベル生成 xlim([0 0.1]); ylim([-1.5 1.5]); %x,y 軸の表示範囲設定 fs = 1000; % サンプリング周波数の設定 (Hz) n = 0 : 1 : fix(tend*fs); % サンプル点の設定 xd = cos(2*pi*f*n/fs); % 離散時間信号の生成 subplot(2,1,2) % 画面を2x1に分割し, 位置 2に設定 stem(n, xd); %xdを図示 xlabel('sample num.'); ylabel('amplitude'); xlim([0 0.1*fs]); ylim([-1.5 1.5]);

練習 2 以下のスクリプトファイルを実行し, 信号点の数 N を変えると, スペクトルがどのように変わるか色々と試してみよう. ただし, スクリプトファイルと同じフォルダにファンクションファイル (dft.m と idft.m) を作成しておくこと. % example02.m DFT/IDFT ここに example01.m の内容をコピーする st = 1; % 信号切り出しの始点 N = 50; % 解析する信号点の数 [DFT_X] = dft(xd(st:st+n-1)); %DFT [idft_x] = idft(dft_x); %IDFT figure(2) %stem((0:n-1), abs(dft_x)); xlabel('k'); ylabel(' X(k) '); stem((0:n-1).*fs/n, abs(dft_x)); xlabel('frequency (Hz)'); ylabel(' X(f) '); figure(3) stem(n, xd, 'b'); hold on stem((0:n-1), real(idft_x), 'r'); xlabel('sample num.'); ylabel('amplitude'); axis([0 250 1.1*min(xd) 1.1*max(xd)]);

%dft.m DFT 計算用ファンクション M- ファイル function [ X ] = dft(signal) N = length(signal) for k = 1 : N x = 0; for n = 1 : N xx = signal( n ) * exp((-2j * pi * (n - 1) * (k - 1))/ N ); x = x + xx; end X( k ) = x; end %idft.m IDFT 計算用ファンクション M- ファイル function [ ix ] = idft(x) N = length(x) for n = 1 : N yy = 0; for k = 1 : N y = X( k ) * exp((2j * pi * (n - 1) * (k - 1))/ N ); yy = yy + y; end ix( n ) = yy; end ix = ix/n;