Group delay noise in minimum phase impulse response
显示 更早的评论
I have recorded an impulse response of a speaker driver unit. I load this impulse response into Matlab. I then recreate the minimum phase using Hilbert transformation, however i get some group delay, say about 100 samples at some frequencies, which is more than i would expect from a speaker driver unit.
I then use some smoothing, in order to reduce the group delay, but i can't seem to get much below 10 samples group delay, without smoothing the hell out of the measured data.
Can i somehow avoid this group-delay which to me looks like somekind of noise. I don't see how a speaker driver unit can have 100 samples group delay between say 1000Hz and 1001Hz. Maybe im wrong.
I have attached a zip file (see link below) with the matlab .m file and the txt file containing the impulse response. Please study the group-delay in fvtool. http://dl.dropbox.com/u/2119565/Matlab_kode.zip
%Fase test
clear all; close all; clc;
Fs = 48000;
%%load measured data
imp1 = load('4inch_mid_imp.txt');
impRe = imp1(:,2); %impulse response, real.
impIm = imp1(:,3); %impulse response, imaginary.
imp = impRe() + impIm()*i; %Complex impulse response, rectangular form
gate = 50; % gate time in [ms]
x = impRe(1:(Fs/1000)*gate); % Load real part of impulsresponse
fvtool(x)
X = abs(fft(x));
X = X(1:(length(X)/2)+1);
% Smooth
X = smooth(X,20,'sgolay');
X = [X; flipud(X(1:end-1))];
x = ifft(X);
[xf, x] = rceps(real(x)); % Hilberttransformation to calculate minimum phase
fvtool(x);
%manual group delay calculation to check that fvtool is not bugging
phase = angle(fft(x));
phase = phase(1: (length(phase)/2) + 1);
for i = 1:length(phase)-1;
GD(i) = -(phase(i+1)-phase(i))/((Fs/2)/length(phase));
end
GD = (GD / (2*pi)) * Fs; %omregn delay fra rad til samples
semilogx(GD);
3 个评论
Wayne King
2011-10-27
Why is the impulse response of a speaker-driven unit complex-valued to begin with?
Daniel Shub
2011-10-27
How is this question different then your previous question?
Torben
2011-10-27
回答(2 个)
Daniel Shub
2011-10-27
0 个投票
What is your SNR for the impulse response. How far was the speaker from the microphone? What do the first ~200 samples look like in the time domain. I think a little noise at the onset in the time domain could really screw up the minimum phase representation. Have you tried zeroing out the initial segment?
4 个评论
Torben
2011-10-27
Daniel Shub
2011-10-27
What domain (time, frequency, something else) is impRe and impIm in? Your gate is in "ms", which implies the time domain, but the Re and Im division makes me think you are dealing with a transfer function.
Torben
2011-10-27
Torben
2011-10-27
类别
在 帮助中心 和 File Exchange 中查找有关 Antennas, Microphones, and Sonar Transducers 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!