From Wikimization
%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
<\pre>