[討論] 如何處理fractional delay

看板MATLAB作者 (軋車)時間4年前 (2020/02/28 00:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
各位大神好 我想要在頻率域中設計一個有Delay的filter 但是實際delay的秒數並非取樣點能夠取到的地方 例如以下code,取樣率為16k,需要delay的時間為0.0017秒 這樣的話我的sample點為16k * 0.0017 = 27.2點 (非整數點0.2無法被取到) 導致畫出時域的filter很毛 (正常應該是只有一個點為1其餘為零) 想請問大神們若要處理像這樣的fractional delay問題該使用什麼方法較好呢? ps.可能不能直接近似sample的點數到整數點,因為之後會設計多個等間的delay channel 若是直接近似的話可能會使channel跟channel間的delay 間隔不一致。 謝謝! fs = 16000; H_pts = 1024; NN=2^nextpow2(H_pts); df=fs/NN; freqs=fs/2*linspace(0,1,NN/2+1);%0:df:(NFFT/2)*df; delay_second = 0.0017; delay = zeros(length(freqs), 1); for dd = 1:length(freqs) delay(dd,1) = exp(-1j*2*pi*freqs(dd)*delay_second); %delay time term end delay_symm = [delay;conj(flipud(delay(2:end-1)))]; delay_timed = real(ifft(delay_symm)); % Impulse respons delay_tt = 0:1/fs:(length(delay_timed)-1)/fs;% time axis figure;plot(delay_tt, delay_timed); % Plot the impulse response in time domain -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.57.72 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1582819245.A.4EC.html
文章代碼(AID): #1UL-UjJi (MATLAB)
文章代碼(AID): #1UL-UjJi (MATLAB)