FIR system design using identification method
design of TSE optimum non-recursive linear filter (FIR) based on frequency response requirements ** lab13_2.m * mw * 05/04/2007
Contents
Input dialog
prompt = {'System order N','Block size K','Harmonics M'};
dlg_title = 'lab13_2'; num_lines = 1; def = {'20','101','40'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
if isempty(answer)
N = 20; K = 101; M = 40; % default
else
N = str2num(answer{1}); % FIR system model order
K = str2num(answer{2}); % simulated length of system response
M = str2num(answer{3}); % number of harmonics
end
Test signal and output signal for desired frequency response
n = 0:K-1; x = zeros(1,K); % test signal for m = 0:M-1 x = x + cos((pi/M)*m*n); end % output signal for desired frequency response y = zeros(size(x)); for m = 0:M w = m/M; % normalized radian frequency / pi if w > 0.3 && w < 0.4 y = y + 10*(w-0.3)*cos(pi*w*(n-N/2)); elseif w >= 0.4 && w <= 0.6 y = y + cos(pi*w*(n-N/2)); elseif w > 0.6 && w < 0.7 y = y + (1-10*(w-0.6))*cos(pi*w*(n-N/2)); end end
FIR filter design
[h,TSE] = design_fir_model(x,y,N);
fvtool(h) % filter viewer tool