% 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