FIR system design using identification method
design of TSE optimum non-recursive linear filter (FIR) based on frequency response requirements ** lab13_4.m * mw * 05/07/2007
Contents
Input dialog
prompt = {'System order N','Block size K','M'};
dlg_title = 'lab13_4'; num_lines = 1; def = {'20','128','128'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
if isempty(answer)
N = 20; K = 128; M = 128; % default
else
N = str2num(answer{1}); % FIR system model order
K = str2num(answer{2}); % simulated length of impulse response
M = str2num(answer{3}); % number of frequency components
end
Ns = N + 1;
Test signal and output signal for desired frequency response
w = pi/M; n = 0:K-1; x = zeros(1,K); % test signal for k = 0:M x = x + cos(w*k*n); end k1 = round(.3*M); k2 = round(.4*M); k3 = round(.6*M); k4 = round(.7*M); delta = 1/(k2-k1); y = zeros(1,K); % output signal for k = k1:k2-1 y = y + delta*(k-k1)*cos(w*k*(n-Ns/2)); end for k = k2:k3 y = y + cos(w*k*(n-Ns/2)); end for k = k3+1:k4 y = y + delta*(k4-k)*cos(w*k*(n-Ns/2)); end
Filter design
[h,TSE] = design_fir_model(x,y,N);
fvtool(h) % filter viewer tool for analysis