forked from Mirrors/freeswitch
44 lines
661 B
Matlab
44 lines
661 B
Matlab
% av_imp.m
|
|
% David Rowe Aug 2012
|
|
% Averages the impulse response samples
|
|
|
|
function imp = av_imp(imp_filename, period_in_secs, st, en)
|
|
f = fopen(imp_filename,"rb");
|
|
s = fread(f, Inf, "short")';
|
|
|
|
Fs = 8000;
|
|
n = period_in_secs * Fs;
|
|
|
|
[r c] = size(s);
|
|
|
|
imp = zeros(1,n);
|
|
for i=1:n:c-n
|
|
imp = imp + s(i:i+n-1);
|
|
endfor
|
|
|
|
% user supplies start and end samples after viweing plot
|
|
|
|
if (nargin == 4)
|
|
imp = imp(st:en);
|
|
end
|
|
|
|
% normalise
|
|
|
|
imp /= sqrt(sum(imp .^ 2));
|
|
|
|
[h w] = freqz(imp, 1, 4000);
|
|
|
|
figure(1);
|
|
clf;
|
|
plot(imp);
|
|
|
|
figure(2);
|
|
clf;
|
|
subplot(211)
|
|
plot(10*log10(abs(h)))
|
|
subplot(212)
|
|
plot(angle(h))
|
|
|
|
endfunction
|
|
|