430 likes | 779 Views
デジタル信号処理②. 2002.5.21. 前回の内容. デジタル信号処理の概論 目的:周波数分析、波形合成、デジタルフィルタ、相関の調査 サンプリング定理 AD/DA 変換の際、連続信号の持つ最大周波数の2倍以上でサンプリングを行う必要がある フーリエ級数展開 三角関数の直交性 フーリエ級数展開 周波数分析とその応用例の紹介. 前回の内容(復習). 周期 の周期関数 f(x) は以下のようにフーリエ級数展開が可能. 周期関数. 今回の内容. フーリエ級数(つづき) フーリエ級数展開により得られる情報 パワースペクトルの物理的意味(パーシバルの関係式)
E N D
デジタル信号処理② 2002.5.21
前回の内容 • デジタル信号処理の概論 • 目的:周波数分析、波形合成、デジタルフィルタ、相関の調査 • サンプリング定理 • AD/DA変換の際、連続信号の持つ最大周波数の2倍以上でサンプリングを行う必要がある • フーリエ級数展開 • 三角関数の直交性 • フーリエ級数展開 • 周波数分析とその応用例の紹介
前回の内容(復習) • 周期 の周期関数f(x)は以下のようにフーリエ級数展開が可能 周期関数
今回の内容 • フーリエ級数(つづき) • フーリエ級数展開により得られる情報 • パワースペクトルの物理的意味(パーシバルの関係式) • フーリエ級数の拡張 • 拡張①:複素フーリエ級数 • 実フーリエ級数から複素フーリエ級数 • 拡張②:フーリエ変換 • フーリエ変換・フーリエ逆変換 • 離散フーリエ変換 (discrete Fourier transform:DFT) • FFTを使った実際のフーリエ変換 • FFT処理の留意点 • Matlab(数値演算処理ソフト) 計測されたデータから必要な情報を取り出す(フィルタリング) ができるようになる。
フーリエ級数⑨フーリエ級数展開によって得られる情報フーリエ級数⑨フーリエ級数展開によって得られる情報 フーリエ級数展開により、 1)振幅の情報 2)位相の情報 を取り出すことが可能 振幅情報 位相情報 「振幅スペクトル」 と呼ばれている。 「パワースペクトル」
フーリエ級数⑩振幅スペクトルの物理的意味 振幅スペクトル 2kHz 0.4 FFT 0.3 3kHz 1kHz 0.2 周波数[Hz] 振幅スペクトルを計算
フーリエ級数⑪パワースペクトルの物理的意味フーリエ級数⑪パワースペクトルの物理的意味 フーリエ級数展開により電圧v[V]が 以下のように表現可能。 1Ω v このとき、 消費される平均電力P[W]を計算する。
フーリエ級数⑫パワースペクトルの物理的意味フーリエ級数⑫パワースペクトルの物理的意味 より、 パワースペクトルの 積分が電力に相当 平均電力
パワースペクトル 周波数[Hz] フーリエ級数⑬パワースペクトルの物理的意味 2kHz 面積が 消費電力 に比例する量 1kHz FFT 3kHz パワースペクトルを計算
フーリエ級数⑭振幅スペクトルとパワースペクトルの比較フーリエ級数⑭振幅スペクトルとパワースペクトルの比較 振幅スペクトル パワースペクトル 周波数[Hz] 周波数[Hz] パワースペクトルでは、振幅スペクトルよりも周波数分布 が強調される。
フーリエ級数⑮パーシバル(Parseval)の等式 パーシバル(Parseval)の等式 さきほど、電力とパワースペクトルの関係のところで、導いた 上の式は、パーシバルの等式と呼ばれている。
複素フーリエ級数① • フーリエ級数を、複素関数を使って書き表すと、式の表現や変形が簡単になることが多い。 • ラプラス変換・Z変換への拡張の基礎 例えば、「微分」は、「jnをかける」 という簡単な操作に置き変わる。
複素フーリエ級数② (オイラーの公式) (ド・モアブルの公式) ド・モアブルの公式をフーリエ級数の式に代入する
複素フーリエ級数③ とおくと、 と変形できる。 一方、 と変形できる。
複素フーリエ級数④ーまとめー フーリエ級数 フーリエ級数展開 複素フーリエ級数 複素フーリエ級数展開 を求めることを、 :「実フーリエ係数」 :「複素フーリエ係数」 「スペクトル」 と呼ばれる 「関数f(x)のスペクトルを調べる」 「関数f(x)をスペクトル分解する」 (光のスペクトル分光の類似から)
フーリエ変換① 扱える関数を周期関数から、非周期関数へ拡張する (周期Tが∞であると考える) 下の複素フーリエ級数の式を とおくと 周期を変数Tを使って表現する。 f(x)を周期Tの関数f(t)と考える。 となる。 で変数をtに変える。
フーリエ変換② 非周期関数(Tが∞)を考えるために、f(x)の極限をとる。 周波数fの関数F(f)とおくと
フーリエ変換③フーリエ変換とフーリエ逆変換フーリエ変換③フーリエ変換とフーリエ逆変換 フーリエ変換 (Fourier Transform) フーリエ逆変換 (Fourier Inverse Transform) フーリエ変換 (Fourier Transform) フーリエ逆変換 (Fourier Inverse Transform)
フーリエ変換 (Fourier Transform) フーリエ逆変換 (Fourier Inverse Transform) 離散フーリエ変換①フーリエ変換の式を離散化 1)実際に使う場合、無限の長さを持った時系列データを使う ことはない 2)サンプリングされた時系列データは、連続信号ではなく、 離散化された信号 実用上は、 コンピュータで処理できる離散フーリエ変換を用いる。
離散フーリエ変換②離散フーリエ変換と離散フーリエ逆変換離散フーリエ変換②離散フーリエ変換と離散フーリエ逆変換 ある時系列データf(k) (k=0,…,N-1)があったとき 離散フーリエ変換 (Discrete Fourier Transform) 離散フーリエ逆変換 (Discrete Fourier Inverse Transform)
離散フーリエ変換③離散フーリエ変換の出力の解釈離散フーリエ変換③離散フーリエ変換の出力の解釈 計測時間・サンプリング周波数・計測点とフーリエ係数との関係 f(k) (k=0,1,2,….,N-1)が Fs: サンプリング周波数 T: 計測時間 により得られた時系列データの時、 時間変数や周波数変数を含んで いないため、 時間、周波数の解釈は、計測条件 から行う必要がある。 の成分の強さを とおくと、F(n)は、周波数 示している。
離散フーリエ変換④スペクトルの計算法 離散フーリエ変換の結果からどのようにスペクトルを計算するか? より、
離散フーリエ変換⑤スペクトルの計算法 F(n)は、N/2で折り返して、大きさが同じ であることが分かる。 F(N/2)は、サンプリング周波数の1/2の 周波数成分を示すため、F(0)~F(N/2) までをスペクトルの計算のために使用 する。 具体的に、どのように計算すると 「振幅スペクトル」が計算できるか 導出してみる。 より
離散フーリエ変換⑥スペクトルの計算 とすると、
離散フーリエ変換⑦スペクトルの計算 f(x)が実数であるときは、半分のフーリエ係数から復元可能 n=0,N/2以外では、 振幅スペクトル=
FFTを使った実際のフーリエ変換① データ数が2のべき乗であるとき、高速に離散フーリエ変換 を行うアルゴリズム「高速フーリエ変換」(Fast Fourier Transform: FFT) が知られている。多くの数値処理ソフトウェア(Matlabなど)で提供 されている。 実際に、Mablabを使って、 1)適当な波形をサンプリングし、 2)振幅スペクトルを計算する 3)簡単なフィルタ処理を行ってみる 不要な箇所のフーリエ係数を0にして、 逆フーリエ変換する。
FFTを使った実際のフーリエ変換②スペクトルの計算FFTを使った実際のフーリエ変換②スペクトルの計算 サンプリング周波数 8192[Hz] 1[s]計測(8192点計測) の信号を計測する。 FFTをかけ振幅スペクトルを計算してみる。
FFTを使った実際のフーリエ変換③Matlabプログラム例FFTを使った実際のフーリエ変換③Matlabプログラム例 • Ts=5;% 5秒 • Fs=8192;% サンプリング周波数 8192[Hz] • t=linspace(0,Ts,Ts*Fs); %サンプリングする時間のデータ 0[s]~5[s] • hz1=1000; • hz2=2000; • hz3=3000; • y1=0.3*sin(2 *pi *hz1*t); % 1k[Hz] • y2=0.4*sin(2 *pi hz2*t); % 2k[Hz] • y3=0.2*sin(2 *pi *hz3*t); % 3k[Hz] • all=y1+y2+y3;%合成波形を作る。 • sound(all,Fs);% 合成波形を鳴らす • f=linspace(0,Fs,8192); %グラフを書くときに使う周波数のデータ • fft_y=fft(all,8192); % 最初から8192点目までのデータをFFTにかける • plot(f,abs(fft_y)/4096,'LineWidth',2.0);axis([0 4096 0 1.0]); 音を聞くために5[s]分のデータ を作成するが、FFTに使用する のは、1[s](8192点)であることに 注意。
振幅スペクトル 周波数[Hz]
FFTを使った実際のフーリエ変換④Matlabプログラム例FFTを使った実際のフーリエ変換④Matlabプログラム例 • hz_l = floor(500/Fs*8192); • hz_h = floor(1500/Fs*8192); • filter=zeros(1,8192); • filter(hz_l:hz_h); • filter(hz_l:hz_h)=1; • plot(f,filter,'LineWidth',2.0);axis([0 4000 0 2.0]); filterを定義する。
FFTを使った実際のフーリエ変換⑤Matlabプログラム例FFTを使った実際のフーリエ変換⑤Matlabプログラム例 • fft_y2=fft_y.*filter; • plot(f,abs(fft_y2)/4096,'LineWidth',2.0);axis([0 4000 0 2.0]); 不要なフーリエ係数を0にする。 1k[Hz]の部分だけが 残る。2k[Hz],3k[Hz]の 周波数成分は、0になる。
FFTを使った実際のフーリエ変換⑥Matlabプログラム例FFTを使った実際のフーリエ変換⑥Matlabプログラム例 • fft_y2=fft_y.*filter; • plot(f,abs(fft_y2)/4096,'LineWidth',2.0);axis([0 4000 0 2.0]); • y4=real(ifft(fft_y2)); • sound(y4,Fs); 逆フーリエ変換する
今回の内容 • フーリエ級数(つづき) • フーリエ級数展開により得られる情報 • パワースペクトルの物理的意味(パーシバルの関係式) • フーリエ級数の拡張 • 拡張①:複素フーリエ級数 • 実フーリエ級数から複素フーリエ級数 • 拡張②:フーリエ変換 • フーリエ変換・フーリエ逆変換 • 離散フーリエ変換 (discrete Fourier transform:DFT) • FFTを使った実際のフーリエ変換 • Matlab(数値演算処理ソフト)を使ったノイズ除去
次回の内容 • 線形システム • Z変換, ラプラス変換 • デジタルフィルタ