44 lines
661 B
Mathematica
44 lines
661 B
Mathematica
|
% 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
|
||
|
|