[討論] 如何處理fractional delay
各位大神好
我想要在頻率域中設計一個有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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章