Group delay noise in minimum phase impulse response
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (2)
Daniel Shub
il 27 Ott 2011
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 Commenti
Vedere anche
Categorie
Scopri di più su Antennas, Microphones, and Sonar Transducers in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!