<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265314</link>
    <title>MATLAB Central Newsreader - Explicit Loops</title>
    <description>Feed for thread: Explicit 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>Sun, 08 Nov 2009 23:22:02 -0500</pubDate>
      <title>Explicit Loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265314#693094</link>
      <author>Justin </author>
      <description>What I want to do is write a function that will return all locations at which a random chain of letters appears in a longer chain of letters. So if the smaller chain of random letter, &quot;motif&quot; is aar and the longer chain, &quot;protein&quot; is abbdaardkadaar, the function will return the location  of aar at 5 and 12. Here's what I have so far, but something is off. I would really appreciate some assistance. Thank so much!&lt;br&gt;
&lt;br&gt;
function loc=Motif_Find(motif,protein)&lt;br&gt;
c=double(motif);&lt;br&gt;
d=double(protein);&lt;br&gt;
[rows cols]=size(d);&lt;br&gt;
if rows~=1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disp('motif_match only accepts vectors') %Error checking; proteins can not have multiple rows.&lt;br&gt;
loc=[];&lt;br&gt;
else&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a=1:length(c);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while d(a)~=c&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loc=a+1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if d(loc)==c&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;disp(loc(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;break&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</description>
    </item>
    <item>
      <pubDate>Sun, 08 Nov 2009 23:38:46 -0500</pubDate>
      <title>Re: Explicit Loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265314#693098</link>
      <author>dpb</author>
      <description>Justin wrote:&lt;br&gt;
&amp;gt; What I want to do is write a function that will return all&lt;br&gt;
&amp;gt; locations at which a random chain of letters appears in a longer chain&lt;br&gt;
&amp;gt; of letters.  &lt;br&gt;
&amp;gt; So if the smaller chain of random letter, &quot;motif&quot; is aar and the&lt;br&gt;
&amp;gt; longer chain, &quot;protein&quot; is abbdaardkadaar, the function will return the&lt;br&gt;
&amp;gt; location of aar at 5 and 12. Here's what I have so far, but something&lt;br&gt;
&amp;gt; is off. I would really appreciate some assistance. Thank so much!&lt;br&gt;
&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; function loc=Motif_Find(motif,protein)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loc = findstr(protein, motif);&lt;br&gt;
&amp;gt; end&lt;br&gt;
&lt;br&gt;
Example from command window...&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;gt;&amp;gt; p = 'abbdaardkadaar';&lt;br&gt;
&amp;nbsp;&amp;gt;&amp;gt; m = 'aar';&lt;br&gt;
&amp;nbsp;&amp;gt;&amp;gt; findstr(p,m)&lt;br&gt;
ans =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5    12&lt;br&gt;
&amp;nbsp;&amp;gt;&amp;gt;&lt;br&gt;
&lt;br&gt;
--</description>
    </item>
    <item>
      <pubDate>Sun, 08 Nov 2009 23:54:01 -0500</pubDate>
      <title>Re: Explicit Loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265314#693105</link>
      <author>Justin </author>
      <description>dpb &amp;lt;none@non.net&amp;gt; wrote in message &amp;lt;hd7kqd$g98$1@news.eternal-september.org&amp;gt;...&lt;br&gt;
&amp;gt; Justin wrote:&lt;br&gt;
&amp;gt; &amp;gt; What I want to do is write a function that will return all&lt;br&gt;
&amp;gt; &amp;gt; locations at which a random chain of letters appears in a longer chain&lt;br&gt;
&amp;gt; &amp;gt; of letters.  &lt;br&gt;
&amp;gt; &amp;gt; So if the smaller chain of random letter, &quot;motif&quot; is aar and the&lt;br&gt;
&amp;gt; &amp;gt; longer chain, &quot;protein&quot; is abbdaardkadaar, the function will return the&lt;br&gt;
&amp;gt; &amp;gt; location of aar at 5 and 12. Here's what I have so far, but something&lt;br&gt;
&amp;gt; &amp;gt; is off. I would really appreciate some assistance. Thank so much!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; function loc=Motif_Find(motif,protein)&lt;br&gt;
&amp;gt;      loc = findstr(protein, motif);&lt;br&gt;
&amp;gt; &amp;gt; end&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Example from command window...&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;  &amp;gt;&amp;gt; p = 'abbdaardkadaar';&lt;br&gt;
&amp;gt;  &amp;gt;&amp;gt; m = 'aar';&lt;br&gt;
&amp;gt;  &amp;gt;&amp;gt; findstr(p,m)&lt;br&gt;
&amp;gt; ans =&lt;br&gt;
&amp;gt;       5    12&lt;br&gt;
&amp;gt;  &amp;gt;&amp;gt;&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; --&lt;br&gt;
&lt;br&gt;
Oh right. Thanks. But is there a way to do this just using explicit looping? I'm trying to practice my looping and I want to be able to understand the mechanics behind findstr</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 01:28:51 -0500</pubDate>
      <title>Re: Explicit Loops</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265314#693112</link>
      <author>dpb</author>
      <description>Justin wrote:&lt;br&gt;
&amp;gt; dpb &amp;lt;none@non.net&amp;gt; wrote in message &amp;lt;hd7kqd$g98$1@news.eternal-september.org&amp;gt;...&lt;br&gt;
&amp;gt;&amp;gt; Justin wrote:&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; What I want to do is write a function that will return all&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; locations at which a random chain of letters appears in a longer chain&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; of letters.  &lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; So if the smaller chain of random letter, &quot;motif&quot; is aar and the&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; longer chain, &quot;protein&quot; is abbdaardkadaar, the function will return the&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; location of aar at 5 and 12. Here's what I have so far, but something&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; is off. I would really appreciate some assistance. Thank so much!&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; function loc=Motif_Find(motif,protein)&lt;br&gt;
&amp;gt;&amp;gt;      loc = findstr(protein, motif);&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; end&lt;br&gt;
&amp;gt;&amp;gt; Example from command window...&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;  &amp;gt;&amp;gt; p = 'abbdaardkadaar';&lt;br&gt;
&amp;gt;&amp;gt;  &amp;gt;&amp;gt; m = 'aar';&lt;br&gt;
&amp;gt;&amp;gt;  &amp;gt;&amp;gt; findstr(p,m)&lt;br&gt;
&amp;gt;&amp;gt; ans =&lt;br&gt;
&amp;gt;&amp;gt;       5    12&lt;br&gt;
&amp;gt;&amp;gt;  &amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; --&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Oh right. Thanks. But is there a way to do this just using explicit&lt;br&gt;
&amp;gt; looping? I'm trying to practice my looping and I want to be able to&lt;br&gt;
&amp;gt; understand the mechanics behind findstr&lt;br&gt;
&lt;br&gt;
Well, of course, just work your way through the target string w/ the &lt;br&gt;
string to match on character at a time.&lt;br&gt;
&lt;br&gt;
jdx = 0;&lt;br&gt;
lp = length(p); lm = length(m);&lt;br&gt;
for idx=1:lp-lm&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if strcmp(p(idx:idx+lm-1), m)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jdx = jdx+1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loc(jdx) = idx;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
The above could be streamlined by making the step skip over the length &lt;br&gt;
of the searched for string if found rather than looking at every &lt;br&gt;
possible location and similar efficiencies but gives the idea.&lt;br&gt;
&lt;br&gt;
--</description>
    </item>
  </channel>
</rss>

