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