www.gusucode.com > signal 工具箱matlab源码程序 > signal/@dfilt/@filterquantizer/farrowsrcoutputer.m
function Outp = farrowsrcoutputer(q,nphases,H,interp_order,decim_order,info) %FARROWSRCOUTPUTER % Copyright 2007 The MathWorks, Inc. NL=filtgraph.nodelist(2*nphases); % Nodelist NL.setnode(filtgraph.node('fracdelay'),1); for ii=2:2:2*(nphases-1), NL.setnode(filtgraph.node('mult'),ii); NL.setnode(filtgraph.node('sum'),ii+1); end NL.setnode(filtgraph.node('output'),2*nphases); % Labels set(NL.nodes(1).block,'label','FDelay'); for ii=2:2:2*(nphases-1), set(NL.nodes(ii).block,'label',['Mult' num2str(ii/2)]); set(NL.nodes(ii+1).block,'label',['FinalAcc' num2str(ii/2)]); end set(NL.nodes(2*nphases).block,'label','Output'); % Orientation set(NL.nodes(1).block,'orientation','left'); for ii=2:2:2*(nphases-1), set(NL.nodes(ii).block,'orientation','down'); set(NL.nodes(ii+1).block,'orientation','right'); end set(NL.nodes(2*nphases).block,'orientation','right'); % Positions and qparam set(NL.nodes(1),'position',[1.0 0 1.0 0],'qparam',q.fddggenqparam); k = 1; set(NL.nodes(2),'position',multpos(k,nphases),'qparam',q.fddggenqparam); for ii=3:2:2*(nphases-1) k = k+1; set(NL.nodes(ii),'position',sumpos(k,nphases),'qparam',q.fddggenqparam); set(NL.nodes(ii+1),'position',multpos(k,nphases),'qparam',q.fddggenqparam); end set(NL.nodes(2*nphases-1),'position',sumpos(k+1,nphases),'qparam',q.fddggenqparam); set(NL.nodes(2*nphases),'position',sumpos(k+1,nphases)+[0.5 0 0.5 0]); % Connections PrevIPorts=filtgraph.nodeport(2,1); for ii=2:2:2*(nphases-1), NL.connect(1,1,ii,2); % Frac delay to mult NL.connect(ii,1,ii+1,1); % mult to sum NL.connect(ii+1,1,ii+2,1); % sum to mult (or output) PrevIPorts = [PrevIPorts filtgraph.nodeport(ii+1,2)]; %#ok<AGROW> end % Parameterization mainparams(1)=filtgraph.indexparam(1,num2str([interp_order,decim_order],18)); for ii=2:2:2*(nphases-1), mainparams(ii) = filtgraph.indexparam(ii,'2'); %#ok<AGROW> mainparams(ii+1) = filtgraph.indexparam(ii+1,'++|'); %#ok<AGROW> end mainparams(2*nphases) = filtgraph.indexparam(2*nphases,{}); Outp = filtgraph.stage(NL,PrevIPorts,[],[],[],mainparams); %-------------------------------------------------------------------------- % Utility Functions function pos = sumpos(stage,nphases) vlocfactor = 1/(2*nphases+1); pos = [0.5 vlocfactor*(stage+1)+0.65 0.5 vlocfactor*(stage+1)+0.65]; function pos = multpos(stage,nphases) pos = sumpos(stage,nphases)+[0.2 0.025 0.2 0.025]; % [EOF]