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

    function Head = firinterpheader_order0(q,num,interp_order,H,info)

% Copyright 2005 The MathWorks, Inc.

% Construct the first layer, structure specific
NL=filtgraph.nodelist(interp_order+1);

hlocfactor = 1/(interp_order+1);
vlocfactor = 1/(2*interp_order+1);

% Specify coefficient names
nglbl = cell(1,interp_order);
if info.doMapCoeffsToPorts
    for m=1:interp_order
        nglbl{m} = sprintf('%s%d',info.coeffnames{1},m);
    end
end

% connectors & gains
for m=1:interp_order
    %gain
    gainidx = m;   %calculate the node index in the node list
    NL.setnode(filtgraph.node('gain'),gainidx);
    set(NL.nodes(gainidx).block,'label',['headgain' num2str(m)]);
    set(NL.nodes(gainidx),'position',[1-hlocfactor*m vlocfactor*m 1-hlocfactor*m vlocfactor*m]);  %gain aligned backwards
    set(NL.nodes(gainidx).block,'orientation','down');
    ng = {'0'}; 
    ng = NL.coeff2str(num,m);
    mainparams(gainidx)=filtgraph.indexparam(gainidx,ng,nglbl{m});
end

% input
inputidx=interp_order+1;
NL.setnode(filtgraph.node('input'),inputidx);
set(NL.nodes(inputidx).block,'label','Input');
set(NL.nodes(inputidx),'position',[0 0 0 0]);
set(NL.nodes(inputidx).block,'orientation','right');
set(NL.nodes(inputidx).block,'orientation','right');
mainparams(inputidx)=filtgraph.indexparam(inputidx,{});

% Specify qparams

%gain

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


% connections
% connect connectors to gains
inputidx = interp_order+1;

for m=1:interp_order
    gainidx = m;
    NL.connect(inputidx,1,gainidx,1);
end

% the port to previous and next stage
NextIPorts=[];
NextOPorts=[];
for m=1:interp_order
    NextOPorts = [NextOPorts, filtgraph.nodeport(m,1)];
end

Head = filtgraph.stage(NL,[],[],NextIPorts,NextOPorts,mainparams);