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
+