V_AVEPSPEC calculates the mean square transfer function for a filter D=(B,A) Inputs: B,A Numerator and denominator filter coefficients. Output: D The mean square transfer function of the filter B/A. This equals the average otuput power when the filter is fed with unit variance white noise. D may be obtained approximately by: N=1024; D=sum(filter(B,A,[1 zeros(1,N)]).^2)
0001 function d=v_meansqtf(b,a) 0002 %V_AVEPSPEC calculates the mean square transfer function for a filter D=(B,A) 0003 % 0004 % Inputs: B,A Numerator and denominator filter coefficients. 0005 % 0006 % Output: D The mean square transfer function of the filter B/A. This equals 0007 % the average otuput power when the filter is fed with unit variance 0008 % white noise. 0009 % 0010 % D may be obtained approximately by: 0011 % N=1024; D=sum(filter(B,A,[1 zeros(1,N)]).^2) 0012 0013 % Since the power spectrum is the fourier transform of the autocorrelation, we can calculate 0014 % the average value of pb/pa by taking the 0'th order term of the convolution of the autocorrelation 0015 % functions associated with b and 1/a. Since b is an FIR filter, this convolution is 0016 % a finite sum even though the autocorrelation function of 1/a is infinite in extent. 0017 0018 % Copyright (C) Mike Brookes 1997 0019 % Version: $Id: v_meansqtf.m 10865 2018-09-21 17:22:45Z dmb $ 0020 % 0021 % VOICEBOX is a MATLAB toolbox for speech processing. 0022 % Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html 0023 % 0024 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0025 % This program is free software; you can redistribute it and/or modify 0026 % it under the terms of the GNU General Public License as published by 0027 % the Free Software Foundation; either version 2 of the License, or 0028 % (at your option) any later version. 0029 % 0030 % This program is distributed in the hope that it will be useful, 0031 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0032 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0033 % GNU General Public License for more details. 0034 % 0035 % You can obtain a copy of the GNU General Public License from 0036 % http://www.gnu.org/copyleft/gpl.html or by writing to 0037 % Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. 0038 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0039 0040 if length(a)==1 0041 d=(b(:)')*b(:); 0042 else 0043 m=lpcar2ra(b(:)'); 0044 m(1)=m(1)*0.5; 0045 d=2*v_lpcar2rr(a(:)',length(m)-1)*m'; 0046 end