Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ディジタル信号処理 課題解説 その8

2,681 views

Published on

  • Be the first to comment

  • Be the first to like this

ディジタル信号処理 課題解説 その8

  1. 1. 課題解説 その8
  2. 2. ディジタルフィルタの設計 • 復習 • 課題49 回路の遅延 • 課題51 非再帰形システムの回路構成(課題50は未完成) • 課題52 縦続構成と並列構成 • 課題53 Z変換に基づいた逆フィルタの理論 • 課題54 位相歪み • 課題(55,56),57 FIRフィルタの周波数特性 • 課題58 直線位相フィルタの回路構成 • 課題59 位相遅延と群遅延 • 課題60 FIRフィルタの設計
  3. 3. 課題49 N次のFIRフィルタの直接形,転置形の回路構成にお いて,因果的な入力信号𝑥[𝑛]が回路に入力されたとき, 出力信号𝑦[𝑛]はどのようなタイミングで出力されるの か考えてみよう 出力信号はすぐに出力される のではなく加算器や乗算器で 遅延が起こる
  4. 4. 入力(N=8の場合) 課題49 2入力の加算器の遅延を𝑎,乗算器 の遅延を𝑏として… • 直接形の場合 • 乗算器…1回 • 加算器…並列計算可能としてlog 2 𝑁回 (Nが2の累乗の場合) →𝑎 log 2 𝑁 + 𝑏 • 転置形の場合 • 乗算器…1回 • 加算器…1回 →𝑎 + 𝑏 出力
  5. 5. 課題50 式(4.74)のように因数分解された伝達関数が 図4.13 のような縦続形構成で実現できることを示し なさい.ま た,縦続形構成では部分回路の接続の順序に任意 性がある。接続順序は何を基に決めればよいかを考 えなさい.
  6. 6. 課題50 • 鋭意制作中…
  7. 7. 課題51 式(4.82)の伝達関数が図4.15のような構成で 実現できることを示しなさい。
  8. 8. 課題51 • 式(4.82)において 𝑌 𝑧 = 𝐻 𝑧 𝑋 𝑧 = 1 1+𝑄 𝑧 𝑃 𝑧 𝑋[𝑧] = 𝑃 𝑧 𝑋 𝑧 − 𝑄 𝑧 𝑌[𝑧] よって回路構成は入力にP[z]をかけたものと出力にQ[z]を掛け たものを引いた値を出力とするのでこれをブロック図にすると図 4.15のようになる.
  9. 9. 課題52 図4.17のような縦続構成と図4.18のような 並列構成の特徴の比較を行いなさい。 ・回路素子数 ・latency ・計算誤差
  10. 10. 課題52 • 回路素子数については特に差はない. • latencyはブロック単位でみると差はないが並列形は乗算器 による計算を並列に行うことができるので並列形の方が latencyは小さい • 計算誤差は縦続形は直列的に計算を行うので量子化誤差 が大きくなる.よって並列形の方が計算誤差が小さい • 上記3点に着目すると縦続形に利点がないように思われるが実際には 縦続形は回路構成が規則的であり,また設計もしやすいことから多く用 いられている.
  11. 11. 課題53 のフーリエ変換に基づいた逆フィルタの議論を 基にし て, z変換に基づいた逆フィルタの理論を示しなさい.
  12. 12. 課題53 • 逆フィルタとは𝑌 𝑧 = 𝑀 𝑧 𝑋 𝑧 • つまりFIR… 1 𝑀 −𝑚 𝑚=1 𝑎 𝑚 𝑧 𝑀 𝑧 = 1/𝐻[𝑧] 𝑁 1+ 𝑛=1 𝑏 𝑛 𝑧 −𝑛 IIR… 𝑀 −𝑚 𝑚=1 𝑧 • 安定性条件⇔M[z],H[z]がともに安定⇔極𝑧 𝑛 が単位円内に存在 • 上式を零点,極,ゲインの形にすると • FIR…𝐶 • IIR…𝐶 1 𝑀 (1−𝛼 𝑧 −1 ) 𝑚 𝑚=1 𝑁 −1 𝑛=1(1−𝛽 𝑛 𝑧 ) 𝑀 (1−𝛼 𝑧 −1 ) 𝑚 𝑚=1 • システムの安定条件は • FIR…𝑧 = 𝛼 𝑚 がz平面の単位円内に存在すること • IIR…𝑧 = 𝛼 𝑚 と𝑧 = 𝛽 𝑛 がz平面の単位円内に存在すること
  13. 13. 課題54 人間の1つの耳では,各周波数のパワーの変化は知 覚できるが,位相変化は知覚しにくいとされている。こ れを確認してみなさい.具体的には,モノラルの音楽 信号をフーリエ変換し,位相を歪ませて逆フーリエ変 換し,元の音楽と違って聞こえるかどうかを試してみよ う.左と右に位相の異なった音楽を流すとどのように 聞こえるかも試してみよう。
  14. 14. 課題54 位相を変えてみる clear all close all fs=16000; t=0:1/fs:10; pd=1/4; y=0.5*sin(2*pi*110*t+(2*pi*pd))+... 0.3*sin(2*pi*220*t+(2*pi*pd))+... 0.2*sin(2*pi*440*t+(2*pi*pd)); audiowrite('sin14.wav',y,fs);
  15. 15. 課題54 聴いてみる ±0° +45° ー90° モノラルで聴くと3つに差は感じない
  16. 16. 課題54 聴いてみる2 L:±0°R:+45° 左右の耳で音が聞こえ始める時間が違う ⇒位相差の発生 左側で音がなっているように聴こえる 人間の耳は左右の耳の聞こえ方の違いか ら,どの方向から音が鳴っているかを聞き 分けることができる
  17. 17. 課題54 clear all close all L:0° R:位相をぐるぐる回した波形 を作ってみると… L,Rのパン振りはaudacityを用 いる fs=16000; t=0:1/fs:0.1; y=0; bun=36; for ii=1:bun y1=0.5*sin(2*pi*110*t+(2*pi*ii/bun))+... 0.3*sin(2*pi*220*t+(2*pi*ii/bun))+... 0.2*sin(2*pi*440*t+(2*pi*ii/bun)); y=[y y1]; end audiowrite('sin-g.wav',y,fs);
  18. 18. 課題54 結果 音が周り回転しているように聴こえる 実際は音量など細かい指定が必要ではあるが,これを応 用すると360°様々な方向から音が聴こえるようにするこ とができる (例:http://www.youtube.com/watch?v=Svce3wsN-HU)
  19. 19. 課題57 場合1~4の直線位相FIRフィルタを作り,MATLAB を使ってそれらの周波数特性を描いて見よう 偶関数、N奇数 偶関数、N偶数 奇関数、N奇数 奇関数、N偶数
  20. 20. 課題57 • 場合1を考える … , ℎ −1 = 0, ℎ 0 = −0.2, ℎ 1 = 0.5, ℎ 2 = 1, ℎ 3 = 0.5, ℎ 4 = − 0.2, ℎ 5 = 0, …  フィルタのインパルス応答が有限である  因果性を満たしている • z変換 𝐻 𝑧 = ∞ ℎ 𝑛 𝑧 −𝑛 𝑛=0 代入すると… H z = −0.2 + 0.5z −1 + z −2 + 0.5z −3 − 0.2z −4 • この伝達関数の周波数応答を求める 𝐻 𝑒 𝑗𝜔 = ∞ 𝑛=0 ℎ 𝑛 𝑒 −𝑗𝜔𝑛
  21. 21. 課題57 clear all close all h=[-0.2 0.5 1 0.5 -0.2]'; [H,W]=freqz(h,1,512,'whole'); W=W/pi; subplot(2,1,1); plot(W,abs(H)); xlabel('angular frequency(×π)'); ylabel('amplitude'); subplot(2,1,2); plot(W,unwrap(angle(H)*180/pi)); xlabel('angular frequency(×π)'); ylabel('phase(°)'); freqz…デジタルフィルタの周波数 応答を求める 入力引数は伝達関数の分子、分母、 周波数応答のサンプル点 出力引数は周波数応答、対応する 角周波数 振幅特性および位相特性をプロット する hの中身を変えると他の場合も作れ る
  22. 22. 課題57 • 結果  直線位相性(𝜃 = 𝛼𝜔)を満たしている 赤丸の部分はどのような伝達関数でもゼロになる (証明→課題55、56)
  23. 23. (課題55の証明) • 振幅特性の式(場合1のみ解説、場合2-4も同様) 𝑁−1 𝑛=0 ℎ 𝐻 𝜔 = = = ={ = 𝑁−3 2 𝑛=0 ℎ 𝑁−3 2 𝑛=0 ℎ 𝑁−3 2 𝑛=0 ℎ 𝑁−1 2 𝑛=0 𝑛 𝑛 𝑒 −𝑗𝜔𝑛 {𝑒 −𝑗𝜔𝑛 +𝑒 −𝑗𝜔 𝑁−𝑛−1 𝑛 ・2 cos 𝑛 ・2 cos 𝑎 𝑛 cos 𝜔𝑛 𝑒 𝑁−1 2 𝜔 𝑁−1 𝑒 −𝑗𝜔 2 − 𝑛 𝜔 𝑁−1 2 𝑗 −𝜔 𝑁−1 2 }+ℎ 𝑁−1 2 − 𝑛 +ℎ 𝑎𝑛 = 2ℎ +ℎ 𝑁−1 2 ℎ 𝑁−1 𝑒 −𝑗𝜔 2 𝑁−1 2 𝑁−1 𝑒 −𝑗𝜔 2 cos(𝜔・0)} 𝑛−1 2 𝑁−1 − 2 (𝑛 = 0) 𝑛 𝑁−1 𝑒 −𝑗𝜔 2 (𝑛 ≠ 0)
  24. 24. (課題55の証明) 場合1~4の振幅特性は 場合1: 場合2: 場合3: 場合4: 𝑁−1 2 𝑛=0 𝑁−1 2 𝑛=0 𝑁−1 2 𝑛=0 𝑁−1 2 𝑛=0 𝑎 𝑛 cos 𝜔𝑛 𝑏 𝑛 cos 𝜔 𝑛 1 − 2 𝑎𝑛 = ℎ 2ℎ 𝑏 𝑛 = 2ℎ 𝑁 2 𝑛−1 2 𝑁−1 − 2 (𝑛 = 0) 𝑛 (𝑛 ≠ 0) − 𝑛 𝑎 𝑛 sin 𝜔𝑛 𝑏 𝑛 sin 𝜔 𝑛− 1 2 𝜔 = 0, 𝜋を代入して赤丸の部分が0になるかを確かめる.→課題 56
  25. 25. (課題56の証明) 場合2に𝜔 = 𝜋を代入すると 𝑁−1 2 𝑛=0 𝑏 𝑛 cos 𝜋 𝑛 − 1 2 =0 場合3に𝜔 = 0を代入すると 𝑁−1 2 𝑛=0 𝑎 𝑛 sin 0𝑛 = 0 場合3に𝜔 = 𝜋を代入すると 𝑁−1 2 𝑛=0 𝑎 𝑛 sin 𝜋𝑛 = 0 場合4に𝜔 = 0を代入すると 𝑁−1 2 𝑛=0 𝑏 𝑛 sin 0 𝑛 − 1 2 =0 と
  26. 26. 課題57 • 実際には最初に作りたい周波数応答の形を決めておきその 形に近い伝達関数を求める. • 例:fir1 Nと通過帯域を指定すればその特性を満たすフィルタを出力 する • しかし,例えば場合2ではHPFは作れない • MATLABではNが偶数でHPFを作るように指定した時は自動的に次 数を1増やして奇数にしてからフィルタを制作する
  27. 27. 課題58 直線位相フィルタには、以下の4タイプがある。 場合1:Nが奇数、偶対称 h[n] = h[N – n – 1] 場合2:Nが偶数、偶対称 h[n] = h[N – n – 1] 場合3:Nが奇数、奇対称 h[n] = – h[N – n – 1] 場合4:Nが偶数、奇対称 h[n] = – h[N – n – 1] 各タイプのフィルタの回路構成を示しなさい。
  28. 28. 課題58 場合1 N 1 h  (  1) 2 N 1 h  ( ) 2
  29. 29. 課題58 場合2
  30. 30. 課題58 場合3 -1を積算する N 1 h  (  1) 2 N 1 h  ( ) 2
  31. 31. 課題58 場合4 -1を積算する
  32. 32. 課題59 位相遅延と群遅延 の違いについて考察しなさい
  33. 33. 課題59 • (現在考え中…ではあるができたところまで) • 位相遅延も群遅延も入力信号と出力信号の遅延時間を計算 する手法である • ただし位相遅延は位相差で表記するので−𝜋から𝜋までの範囲しか表 示されない.(つまり遅延が0なのか2πあるのかは判別できない) • 実際に遅延時間を計算するときは群遅延が用いられる
  34. 34. 課題59 • 群遅延が周波数により異なるとどのようになるか? [y1,fs]=audioread('s1131.wav'); y1=mean(y1,2); [b,a,tau] = iirgrpdelay(10, [0 0.1 0.3 1],[0 1],[60 90 10 30]); subplot(3,1,3); [G,F] = grpdelay(b,a, 0:0.001:1, 2); F1=(F*fs)/(2*pi*1000); plot(F1, G); xlabel('frequency(kHz)'); ylabel('grpdelay'); [H1,W]=freqz(b,a,512); F1=(W*fs)/(2*pi*1000); subplot(3,1,1); %plot(F1,abs(H1),'b'); plot(F1,20*log10(abs(H1)),'b'); xlabel('frequency(kHz)'); ylabel('amplitude'); subplot(3,1,2); plot(F1,unwrap(angle(H1)*180/pi)); xlabel('frequency(kHz)'); ylabel('phase(°)'); • iirgrpdelayは群遅延を任意 に変更させることができる • 関数の入力はそれぞれ次数, 正規化された周波数の値,通 過させる周波数の範囲,群遅 延の値である • 左では,0の時に60、0.1の時 に90、0.3の時に10、1の時に 30であるような群遅延特性で ある • grpgelayはフィルタの群遅 延特性を出力する
  35. 35. 課題59 • 実際に音声にフィルタをかけてみる • フィルタをかける前 振幅特性はほとんど1 • フィルタをかけた後 次数が10であるので指 定した特性とは多少の 誤差が出る … ほとんど変化が感じられない 現在試行錯誤中
  36. 36. 課題60 1000Hz以下の周波数のみを通過させる低域通過FIRフィルタを 設計し、その振幅特性を図示しなさい.またフィルタの次数を大 きくすることによって、振幅特性がどのように変化するかを調べ なさい.
  37. 37. 課題60 clear all close all [~,fs] = audioread('samplem.wav'); thresh=1000; b=fir1(10,thresh/(fs/2),'low');a=1; [H1,W]=freqz(b,a,512); F1=(W*fs)/(2*pi*1000); plot(F1,abs(H1)); xlabel('frequency(kHz)'); ylabel('amplitude'); hold on; 10次のFIRフィルタの周波数応 答を求める fir1は次数,カットオフ周波数, フィルタータイプを指定する • カットオフ周波数はナイキスト 周波数(サンプリング周波数の 2分の1)を1として指定する • フィルタータイプは'high' (HPF),'stop'(BEF)などLPFや BPFは指定しなくてよい ωからfへの変換はω=πの時ナイ キスト周波数と等しいので 𝜔 𝑓𝑠 𝑓= 𝜋 2
  38. 38. 課題60 同様に100次と400次のフィルタも 求める b=fir1(100,thresh/(fs/2),'low');a=1; [H2,W]=freqz(b,a,512); F2=(W*fs)/(2*pi*1000); plot(F2,abs(H2),'r'); b=fir1(400,thresh/(fs/2),'low');a=1; [H3,W3]=freqz(b,a,512); F3=(W*fs)/(2*pi*1000); plot(F3,abs(H3),'g'); line([thresh/1000 thresh/1000],[0 1],'LineWidth',2,'Color','y'); xlim([0 2]); ylim([0 1]); legend('10','100','400');
  39. 39. 課題60 結果
  40. 40. 課題60 実際にフィルタを かけてみる clear all close all [x,fs] = audioread('samplem.wav'); in=20*log10(abs(fft(x))); fftlength=length(x)/2; xx=linspace(0,(fs/2)/1000,fftlength); plot(xx(1:fftlength),in(1:fftlength)); hold on; thresh=1000; b=fir1(400,thresh/(fs/2),'low');a=1; y= filter(b,a,x); out=20*log10(abs(fft(y))); plot(xx(1:fftlength),out(1:fftlength),'r'); audiowrite('out.wav',y1,fs)
  41. 41. 課題60 結果

×