<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360</link>
    <title>MATLAB Central Newsreader - dynamically creating for loops</title>
    <description>Feed for thread: dynamically creating for loops</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Wed, 09 Sep 2009 06:20:17 -0400</pubDate>
      <title>dynamically creating for loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360#678915</link>
      <author>Ramana Murthy</author>
      <description>Hi&lt;br&gt;
I have a problem in creating for loops&lt;br&gt;
Suppose there is a variable n.(say 10)&lt;br&gt;
&lt;br&gt;
for i1 = 1:10&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i2 = i1-1:i1+1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i3 = i2-1:i2+1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.....&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i'n'( i.e i10 in present case) = i9-1:i9+1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;statements&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end..&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
How can I fix this for loops varyingly ?&lt;br&gt;
Is it possible at all ?&lt;br&gt;
&lt;br&gt;
with regards,&lt;br&gt;
ramana</description>
    </item>
    <item>
      <pubDate>Wed, 09 Sep 2009 08:58:04 -0400</pubDate>
      <title>Re: dynamically creating for loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360#678939</link>
      <author>Jan Simon</author>
      <description>Dear Ramana murthy!&lt;br&gt;
&lt;br&gt;
&amp;gt; I have a problem in creating for loops&lt;br&gt;
&amp;gt; Suppose there is a variable n.(say 10)&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; for i1 = 1:10&lt;br&gt;
&amp;gt;     for i2 = i1-1:i1+1&lt;br&gt;
&amp;gt;          for i3 = i2-1:i2+1&lt;br&gt;
&amp;gt;           .....&lt;br&gt;
&amp;gt;                for i'n'( i.e i10 in present case) = i9-1:i9+1&lt;br&gt;
&amp;gt;                 statements&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;            end&lt;br&gt;
&amp;gt;          end&lt;br&gt;
&amp;gt;      end..&lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; How can I fix this for loops varyingly ?&lt;br&gt;
&amp;gt; Is it possible at all ?&lt;br&gt;
&lt;br&gt;
It is possible! It looks like a perfect task for a recursive call of a subfunction.&lt;br&gt;
If your statements depend on the variables of [i1 to i9], this vector must be one of the inputs of the function. Another input would be the parameter [n], which is e.g. reduced by 1 in each recursive call and if [n] equals 0, the statements are processed.&lt;br&gt;
&lt;br&gt;
Of course, it is possible without recursion also using tricky constructions with a WHILE loop. Most likely the recursion is not the fastest method, but it can be really &quot;nice&quot;.&lt;br&gt;
&lt;br&gt;
Good luck, Jan</description>
    </item>
    <item>
      <pubDate>Wed, 09 Sep 2009 09:07:04 -0400</pubDate>
      <title>Re: dynamically creating for loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360#678944</link>
      <author>qooroo </author>
      <description>of course if n &amp;gt; 500 then you'll get&lt;br&gt;
&lt;br&gt;
Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)&lt;br&gt;
to change the limit. Be aware that exceeding your available stack space can&lt;br&gt;
crash MATLAB and/or your computer.&lt;br&gt;
&lt;br&gt;
I'd always avoid recursion if I could.&lt;br&gt;
&lt;br&gt;
-qooroo</description>
    </item>
    <item>
      <pubDate>Wed, 09 Sep 2009 09:18:05 -0400</pubDate>
      <title>Re: dynamically creating for loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360#678949</link>
      <author>Bruno Luong</author>
      <description>&quot;qooroo &quot; &amp;lt;qoorooAT@gmailDOT.comREMOVECAPS&amp;gt; wrote in message &amp;lt;h87r7o$jub$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; of course if n &amp;gt; 500 then you'll get&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)&lt;br&gt;
&amp;gt; to change the limit. Be aware that exceeding your available stack space can&lt;br&gt;
&amp;gt; crash MATLAB and/or your computer.&lt;br&gt;
&lt;br&gt;
Unlikely, assuming each for-loop runs on 2 elements, how big is the number of combination before we run to recursive limit? 2^500 cases which is larger than 3e150 !&lt;br&gt;
&lt;br&gt;
To OP, use NDGRID or any combination-generated tool in FEX to generate an array of combination your list of variables, then run a single for-loop on this array (or vectorize your code if you can.&lt;br&gt;
&lt;br&gt;
Bruno</description>
    </item>
    <item>
      <pubDate>Wed, 09 Sep 2009 09:37:03 -0400</pubDate>
      <title>Re: dynamically creating for loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360#678952</link>
      <author>Ramana Murthy</author>
      <description>Hi&lt;br&gt;
Thank you for your directions. &lt;br&gt;
to be more detail, I 'm having the following code&lt;br&gt;
&lt;br&gt;
alpha =5;&lt;br&gt;
M = 10&lt;br&gt;
cnt = 1;&lt;br&gt;
for j1 = 1 + alpha : M - alpha&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j2 = max(alpha,j1-1) : min(j1+1,M - alpha)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j3 = max(alpha,j2-1) : min(j2+1,M - alpha)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......for j'N' = &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data(cnt,:) = [j1 j2 j3 .....];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnt = cnt+1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;....&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Can someone help me with code. &lt;br&gt;
&lt;br&gt;
with regards,&lt;br&gt;
ramana</description>
    </item>
    <item>
      <pubDate>Wed, 09 Sep 2009 09:40:04 -0400</pubDate>
      <title>Re: dynamically creating for loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/260360#678953</link>
      <author>Ramana Murthy</author>
      <description>Hi&lt;br&gt;
Thank you for your directions. &lt;br&gt;
to be more detail, I 'm having the following code&lt;br&gt;
&lt;br&gt;
alpha =5;&lt;br&gt;
M = 10&lt;br&gt;
cnt = 1;&lt;br&gt;
for j1 = 1 + alpha : M - alpha&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j2 = max(alpha,j1-1) : min(j1+1,M - alpha)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j3 = max(alpha,j2-1) : min(j2+1,M - alpha)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......for j'N' = &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data(cnt,:) = [j1 j2 j3 .....];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnt = cnt+1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;....&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Can someone help me with code. &lt;br&gt;
&lt;br&gt;
with regards,&lt;br&gt;
ramana</description>
    </item>
  </channel>
</rss>

