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