Time Domain Inversion

From Wikimization

(Difference between revisions)
Jump to: navigation, search
(memoryless weak nonlinearity)
Current revision (21:47, 10 January 2025) (edit) (undo)
 
Line 38: Line 38:
end
end
end
end
-
<\pre>
+
</pre>

Current revision

%mapping coefficients by time domain inversion. December 24 2024
%For investigating solution uniqueness
function [zeta inducedDC] = backsubztime3(Ep, z, Nh, testtone, unityGain, precision) 
   version -blas; version -lapack;  %load AMD AOCL libraries
   if nargin < 6
      precision = 34;
   end
   mp.Digits(precision);
   N = numel(z);
   zeta = [-ones(N,1,'mp'),  testtone.^(1:Nh)]\z;
   inducedDC = zeta(1);
   zeta(1) = [];
   if unityGain
      zeta = ug(zeta, Ep, precision);  %unity gain and negativity check
   end
end

%adjust mapping coefficients for unity gain
function xi = ug(xi, Ep, precision)
   version -blas; version -lapack;  %load AMD AOCL libraries
   if nargin < 3
      precision = 34;
   end
   mp.Digits(precision);
   zero = mp('0');
   one  = mp('1');
   two  = mp('2');
   Nh = numel(xi);
   t = zero;
   for n=2:ceil(Nh/2)
      t = t + nchoosek(two*n-one,n-one)*(Ep/two)^(two*n-two)*xi(2*n-1);
   end
   xi(1) = one - t;  %adjust for unity gain. 
   if xi(1) < 0
      xi(3:2:Nh) = -xi(3:2:Nh);   %negativity check
      xi(1) = one + t; 
   end
end
Personal tools