Mercurial > hg > ltpda
diff m-toolbox/classes/@pzmodel/respCore.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@pzmodel/respCore.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,47 @@ +% RESPCORE returns the complex response of one pzmodel object. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: RESPCORE returns the complex response of one pzmodel object +% as a data-vector. This function should only be used by the +% resp method of the ltpda_tf class. +% +% CALL: r = respCore(obj, f); +% +% VERSION: $Id: respCore.m,v 1.3 2010/03/15 15:49:53 ingo Exp $ +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function r = respCore(varargin) + + %%% Get Inputs + obj = varargin{1}; + f = varargin{2}; % Row vector + + gain = obj.gain; + poles = obj.poles; + zeros = obj.zeros; + delay = obj.delay; + np = numel(poles); + nz = numel(zeros); + + %%% Compute response + r = gain*ones(size(f)); + + for j=1:np + if ~isnan(poles(j).f) + [f, pr] = resp(poles(j),f); + r = r .* pr; + end + end + + for j=1:nz + if ~isnan(zeros(j).f) + [f, zr] = resp(zeros(j),f); + r = r ./zr; + end + end + + r = r .* exp(-2*pi*f*1i*delay); % Row vector + +end +