<?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=Back_Substitution</id>
		<title>Back Substitution - 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=Back_Substitution"/>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Back_Substitution&amp;action=history"/>
		<updated>2026-05-25T04:16:18Z</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=Back_Substitution&amp;diff=3317&amp;oldid=prev</id>
		<title>Ranjelin at 02:35, 30 December 2024</title>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Back_Substitution&amp;diff=3317&amp;oldid=prev"/>
				<updated>2024-12-30T02:35:20Z</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 02:35, 30 December 2024&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&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;/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;/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;%nonplatonic alias frequency function&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;%nonplatonic alias frequency function&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;function fa = alias(f,Fs)  %Fs is sample rate [Hz] or 2*pi. &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;function fa = alias(f,Fs)  % Fs is sample rate [Hz] or 2*pi. &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;   fa = f - Fs*round(f/Fs);&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;   fa = f - Fs*round(f/Fs);&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=Back_Substitution&amp;diff=3316&amp;oldid=prev</id>
		<title>Ranjelin at 02:25, 30 December 2024</title>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Back_Substitution&amp;diff=3316&amp;oldid=prev"/>
				<updated>2024-12-30T02:25:33Z</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 02:25, 30 December 2024&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&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;      thetai = atan2(-imag(fn(i,:)), real(fn(i,:)));&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;      thetai = atan2(-imag(fn(i,:)), real(fn(i,:)));&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;%     signum(i,:) = mypsi(cos(i*theta1)).*mypsi(cos(thetai));&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;%     signum(i,:) = mypsi(cos(i*theta1)).*mypsi(cos(thetai));&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;      %%% &amp;quot;Perhaps better for computation...&amp;quot;&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;      %%% &amp;quot;Perhaps better for computation...&amp;quot; &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;%%%&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;      varpi = abs(alias(thetai + pi - i*theta1, twopi)) &amp;lt; abs(alias(thetai - i*theta1, twopi));&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;      varpi = abs(alias(thetai + pi - i*theta1, twopi)) &amp;lt; abs(alias(thetai - i*theta1, twopi));&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;      signum(i,varpi) = -one;&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;      signum(i,varpi) = -one;&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=Back_Substitution&amp;diff=3315&amp;oldid=prev</id>
		<title>Ranjelin: New page: &lt;pre&gt; %mapping coefficients by back substitution. %This routine is for thd+n measurement only. %fn is function of time in optional second dimension.  function [zeta signum flip] = backsubz...</title>
		<link rel="alternate" type="text/html" href="http://www.convexoptimization.com/wikimization/index.php?title=Back_Substitution&amp;diff=3315&amp;oldid=prev"/>
				<updated>2024-12-30T02:24:42Z</updated>
		
		<summary type="html">&lt;p&gt;New page: &amp;lt;pre&amp;gt; %mapping coefficients by back substitution. %This routine is for thd+n measurement only. %fn is function of time in optional second dimension.  function [zeta signum flip] = backsubz...&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;
%mapping coefficients by back substitution.&lt;br /&gt;
%This routine is for thd+n measurement only.&lt;br /&gt;
%fn is function of time in optional second dimension. &lt;br /&gt;
function [zeta signum flip] = backsubz2(E, fn, Nh, precision)  %fn is complex 2*fft/N&lt;br /&gt;
   if nargin &amp;lt; 4, precision = 34; end&lt;br /&gt;
   mp.Digits(precision);  %requires Advanpix Multiprecision Toolbox&lt;br /&gt;
   if size(fn,1) ~= Nh, disp(' ');disp('backsubz2(): fn length error');disp(' '); return; end &lt;br /&gt;
   zeta   = zeros(Nh,size(fn,2),'mp');      &lt;br /&gt;
   signum = ones (Nh,size(fn,2),'mp'); &lt;br /&gt;
   flip   = 0;&lt;br /&gt;
   zero   = mp('0');&lt;br /&gt;
   one    = mp('1');&lt;br /&gt;
   two    = mp('2');&lt;br /&gt;
   pi     = mp('pi');&lt;br /&gt;
   twopi  = mp('2*pi');&lt;br /&gt;
   theta1 = atan2(-imag(fn(1,:)), real(fn(1,:)));&lt;br /&gt;
   for i=Nh:-1:1  &lt;br /&gt;
      hi1 = zero;&lt;br /&gt;
      if mod(i,2)  %odd&lt;br /&gt;
         for n=(i+3)/2:ceil(Nh/2)&lt;br /&gt;
            hi1 = hi1 + nchoosek(two*n-one, n-(i+one)/two)*zeta(2*n-1,:);&lt;br /&gt;
         end&lt;br /&gt;
      else         %even&lt;br /&gt;
         for n=(i+2)/2:floor(Nh/2)&lt;br /&gt;
            hi1 = hi1 + nchoosek(two*n,     n-i/two)      *zeta(2*n,:);&lt;br /&gt;
         end   &lt;br /&gt;
      end&lt;br /&gt;
      thetai = atan2(-imag(fn(i,:)), real(fn(i,:)));&lt;br /&gt;
%     signum(i,:) = mypsi(cos(i*theta1)).*mypsi(cos(thetai));&lt;br /&gt;
      %%% &amp;quot;Perhaps better for computation...&amp;quot;&lt;br /&gt;
      varpi = abs(alias(thetai + pi - i*theta1, twopi)) &amp;lt; abs(alias(thetai - i*theta1, twopi));&lt;br /&gt;
      signum(i,varpi) = -one;&lt;br /&gt;
      zeta(i,:) = signum(i,:).*abs(fn(i,:)) - hi1;&lt;br /&gt;
   end&lt;br /&gt;
   zeta = two.^((1:Nh)'-1).*zeta./abs(E.^(1:Nh)');&lt;br /&gt;
   t = find(zeta(1,:) &amp;lt; 0);  %back substitution assumes positive zeta(1,:)&lt;br /&gt;
   if any(t), flip = 1; end&lt;br /&gt;
   zeta  (1:2:Nh,t) = -zeta  (1:2:Nh,t);&lt;br /&gt;
   signum(1:2:Nh,t) = -signum(1:2:Nh,t);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%nonplatonic alias frequency function&lt;br /&gt;
function fa = alias(f,Fs)  %Fs is sample rate [Hz] or 2*pi. &lt;br /&gt;
   fa = f - Fs*round(f/Fs);&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ranjelin</name></author>	</entry>

	</feed>