O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

2.734 visualizações

Publicada em

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

ディジタル信号処理 課題解説 その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 結果

×