<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://www.convexoptimization.com/wikimization/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.convexoptimization.com/wikimization/index.php?action=history&amp;feed=atom&amp;title=Frequency_Domain_Inversion</id>
		<title>Frequency Domain Inversion - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.convexoptimization.com/wikimization/index.php?action=history&amp;feed=atom&amp;title=Frequency_Domain_Inversion"/>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;action=history"/>
		<updated>2026-05-01T22:18:07Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.11.0</generator>

	<entry>
		<id>http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;diff=3325&amp;oldid=prev</id>
		<title>Ranjelin at 05:33, 17 January 2025</title>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;diff=3325&amp;oldid=prev"/>
				<updated>2025-01-17T05:33:54Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:33, 17 January 2025&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   mp.Digits(precision);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   mp.Digits(precision);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   if numel(theta) == 1&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   if numel(theta) == 1 &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;      %preferably nonlinearity output fundamental phase&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      theta = (1:Nh)'*theta;  %linear phase&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      theta = (1:Nh)'*theta;  %linear phase&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   elseif isrow(theta)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   elseif isrow(theta)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ranjelin</name></author>	</entry>

	<entry>
		<id>http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;diff=3321&amp;oldid=prev</id>
		<title>Ranjelin at 05:19, 11 January 2025</title>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;diff=3321&amp;oldid=prev"/>
				<updated>2025-01-11T05:19:36Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:19, 11 January 2025&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 91:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 91:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         lp_failure = true;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         lp_failure = true;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;%adjust mapping coefficients for unity gain&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;function xi = ug(xi, Ep, precision)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   version -blas; version -lapack;  %load AMD AOCL libraries&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   if nargin &amp;lt; 3&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      precision = 34;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   mp.Digits(precision);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   zero = mp('0');&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   one  = mp('1');&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   two  = mp('2');&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   Nh = numel(xi);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   t = zero;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   for n=2:ceil(Nh/2)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      t = t + nchoosek(two*n-one,n-one)*(Ep/two)^(two*n-two)*xi(2*n-1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   xi(1) = one - t;  %adjust for unity gain. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   if xi(1) &amp;lt; 0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      xi(3:2:Nh) = -xi(3:2:Nh);   %negativity check&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;      xi(1) = one + t; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ranjelin</name></author>	</entry>

	<entry>
		<id>http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;diff=3320&amp;oldid=prev</id>
		<title>Ranjelin: New page: &lt;pre&gt; %computation of mapping coefficients by frequency domain inversion. August 9 2023 %this subroutine is used for thd+n measurements only; single test tone. function [zeta lp_failure] =...</title>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Frequency_Domain_Inversion&amp;diff=3320&amp;oldid=prev"/>
				<updated>2025-01-11T05:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;New page: &amp;lt;pre&amp;gt; %computation of mapping coefficients by frequency domain inversion. August 9 2023 %this subroutine is used for thd+n measurements only; single test tone. function [zeta lp_failure] =...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
%computation of mapping coefficients by frequency domain inversion. August 9 2023&lt;br /&gt;
%this subroutine is used for thd+n measurements only; single test tone.&lt;br /&gt;
function [zeta lp_failure] = backsubzfreq(Ep, E, fn, Nh, theta, precision) %fn is complex conjugate data 2*conj(fft)/N.&lt;br /&gt;
   version -blas; version -lapack;  %load AMD AOCL libraries&lt;br /&gt;
   maximallyflat        = ~true;                                           %theta is vector or scalar [rads] modifying twiddle W&lt;br /&gt;
   closed               =  true;  %closed form solution. nonclosed is for backsubz3Test (thd); linprog prone to failure for small amplitude test tone or high Nh&lt;br /&gt;
      matrix_Inversion  = ~true;  %choose closed form method: matrix inversion or analytical inverse&lt;br /&gt;
   unitygainconstraint  = ~true;  %amplitude Ep used for unity gain xi determination. E used only to make twiddle matrix.&lt;br /&gt;
   lorenzo              = ~true;  %Lorenzo David closed form twiddle matrix.&lt;br /&gt;
   if size(fn,1) ~= Nh, disp(' ');disp('backsubzfreq(): fn length error');disp(' '); return; end &lt;br /&gt;
   if nargin &amp;lt; 6&lt;br /&gt;
      precision = 34;&lt;br /&gt;
   end&lt;br /&gt;
   mp.Digits(precision);&lt;br /&gt;
   if numel(theta) == 1&lt;br /&gt;
      theta = (1:Nh)'*theta;  %linear phase&lt;br /&gt;
   elseif isrow(theta)&lt;br /&gt;
      theta = theta';&lt;br /&gt;
   end&lt;br /&gt;
   zero = mp('0');&lt;br /&gt;
   one  = mp('1');&lt;br /&gt;
   two  = mp('2');&lt;br /&gt;
   W = zeros(Nh+1,Nh,'mp');&lt;br /&gt;
   C = zeros(1,Nh,'mp');&lt;br /&gt;
   %%% make real twiddle matrix&lt;br /&gt;
   if lorenzo&lt;br /&gt;
      for i=1:Nh&lt;br /&gt;
         for j=i:Nh&lt;br /&gt;
            if ~mod(i+j,2)&lt;br /&gt;
               W(i,j) = two*(E/two)^j*nchoosek(mp(j),(j-i)/two); %second binomial coefficient (i+j)/2 is equivalent to (-i+j)/2 because of numerator j&lt;br /&gt;
            end &lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
   else&lt;br /&gt;
      for i=1:Nh  &lt;br /&gt;
         k = 0;&lt;br /&gt;
         idx = i:2:Nh;&lt;br /&gt;
         for j=idx  %binomial coefs&lt;br /&gt;
            C(j) = nchoosek(mp(j),mp(k));&lt;br /&gt;
            k = k + 1;&lt;br /&gt;
         end&lt;br /&gt;
         W(i,idx) = two*(E/two).^idx.*C(idx);  %E corresponds to measured signal amplitude in frequency domain fn&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
   if maximallyflat&lt;br /&gt;
      for n=2:ceil(Nh/2) &lt;br /&gt;
         W(Nh+1,2*n-1) = nchoosek(two*n-one,n-one)/two^(2*n-2);&lt;br /&gt;
      end&lt;br /&gt;
      theta = [theta; zero];&lt;br /&gt;
      fn    = [fn;    zero];&lt;br /&gt;
   else&lt;br /&gt;
      W(Nh+1,:) = [];&lt;br /&gt;
   end   &lt;br /&gt;
   %%% mapping coef solution by closed form projection OR by linear algebraic inversion (linprog, simplex)&lt;br /&gt;
   lp_failure = false;&lt;br /&gt;
   if closed&lt;br /&gt;
      if matrix_Inversion&lt;br /&gt;
         zeta = real((exp(1j*theta).*W)\fn);&lt;br /&gt;
      else&lt;br /&gt;
         zeta = zeros(Nh,1,'mp');  %from &amp;quot;monotone frequency domain inversion&amp;quot; in chapter 8&lt;br /&gt;
         for j=1:Nh&lt;br /&gt;
          % for k=j:floor((Nh+j)/two)&lt;br /&gt;
          %    zeta(j) = zeta(j) + real((-one)^(k-j)*(two*k-j)*nchoosek(k-one,mp(k-j))*exp(-1j*theta(2*k-j))*fn(2*k-j));&lt;br /&gt;
          % end&lt;br /&gt;
            for k=0:floor((Nh-j)/two)  %Nov.24 2024 changing real to abs fails backsubz3Test.m&lt;br /&gt;
             % zeta(j) = zeta(j) +  abs((two*k+j)*binomial(mp(-j),mp(k),precision)*exp(-1j*theta(2*k+j))*fn(2*k+j));&lt;br /&gt;
               zeta(j) = zeta(j) + real((two*k+j)*binomial(mp(-j),mp(k),precision)*exp(-1j*theta(2*k+j))*fn(2*k+j));&lt;br /&gt;
            end&lt;br /&gt;
            zeta(j) = two^(j-1)*zeta(j)/(j*E^j);  %two^(j-1) because DFT already multiplied by 2&lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
      if unitygainconstraint&lt;br /&gt;
         zeta = ug(zeta, Ep, precision);       %unity gain and negativity check&lt;br /&gt;
      end&lt;br /&gt;
   else&lt;br /&gt;
      Aeq = double([real(exp(1j*theta).*W) &lt;br /&gt;
                    imag(exp(1j*theta).*W)]);&lt;br /&gt;
      beq = double([real(fn) &lt;br /&gt;
                    imag(fn)]);&lt;br /&gt;
      if unitygainconstraint&lt;br /&gt;
         D = zeros(1,Nh);&lt;br /&gt;
         for n=1:ceil(Nh/2)&lt;br /&gt;
            D(1,2*n-1) = nchoosek(two*n-one,n-one)*(Ep/two)^(two*n-two);&lt;br /&gt;
         end&lt;br /&gt;
         Aeq = [Aeq; D];  beq = [beq; 1];  %unity gain constraint.&lt;br /&gt;
      end&lt;br /&gt;
      [zeta,~,flag] = linprog(ones(Nh,1), [], [], Aeq, beq, [0; -inf(Nh-1,1)]); %prone to failure for small amplitude test tone or high Nh&lt;br /&gt;
      if flag &amp;lt; 0&lt;br /&gt;
         zeta = zeros(Nh,1,'mp');&lt;br /&gt;
         lp_failure = true;&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ranjelin</name></author>	</entry>

	</feed>