www.gusucode.com > signal 工具箱matlab源码程序 > signal/@dfilt/@singlefilterquantizer/firdecimheadconnect.m

    function [NL, PrevIPorts, PrevOPorts, NextIPorts, NextOPorts, mainparams]=firdecimheadconnect(q,NL,H,mainparams,decim_order)

% Copyright 2005 The MathWorks, Inc.

% Specify qparams

%sum

for m=1:decim_order-1
    sumidx = 2*decim_order+m;
    set(NL.nodes(sumidx),'qparam','single');
end

%gain

for m=1:decim_order
    gainidx = decim_order+m;
    set(NL.nodes(gainidx),'qparam','single');
end

% connections
% connect connectors to gains
for m=1:decim_order
    gainidx = decim_order+m;
    NL.connect(m,1,gainidx,1);
end

% connect gains to sum, note the last two gains connects to the same sum
% block (last one)
for m=1:decim_order-1
    gainidx = decim_order+m;
    sumidx = 2*decim_order+m;
    NL.connect(gainidx,1,sumidx,1);
end

% the port to previous and next stage
PrevOPorts=[];
NextIPorts=[];
PrevIPorts=[];
NextOPorts=[];
for m=1:decim_order
    PrevIPorts = [PrevIPorts, filtgraph.nodeport(m,1)];
    sumidx = 2*decim_order + m;
    gainidx = decim_order + m;
    if m < decim_order
        NextOPorts = [NextOPorts, filtgraph.nodeport(m,1), filtgraph.nodeport(sumidx,1)];
        NextIPorts = [NextIPorts, filtgraph.nodeport(sumidx,2)];
    else
        NextOPorts = [NextOPorts, filtgraph.nodeport(m,1), filtgraph.nodeport(gainidx,1)];
    end
end