<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/255127</link>
    <title>MATLAB Central Newsreader - Column Index</title>
    <description>Feed for thread: Column Index</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, 01 Jul 2009 20:42:01 -0400</pubDate>
      <title>Column Index</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/255127#662009</link>
      <author>Oleg Komarov</author>
      <description>I have a matrix like this:&lt;br&gt;
a = random('bino',1,0.5,[10,5]);&lt;br&gt;
&lt;br&gt;
And i want to find the colum index corresponding to the last 1 of each row:&lt;br&gt;
IDX = NaN(size(a,1),1);&lt;br&gt;
for i = 1:size(a,1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IDX(i) = find(a(i,:),1,'last');&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Can it be done without the loop?&lt;br&gt;
&lt;br&gt;
Thanks a lot&lt;br&gt;
&lt;br&gt;
Oleg</description>
    </item>
    <item>
      <pubDate>Wed, 01 Jul 2009 22:07:01 -0400</pubDate>
      <title>Re: Column Index</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/255127#662043</link>
      <author>Jos </author>
      <description>&quot;Oleg Komarov&quot; &amp;lt;oleg.komarov@hotmail.it&amp;gt; wrote in message &amp;lt;h2ghmp$t3a$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I have a matrix like this:&lt;br&gt;
&amp;gt; a = random('bino',1,0.5,[10,5]);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; And i want to find the colum index corresponding to the last 1 of each row:&lt;br&gt;
&amp;gt; IDX = NaN(size(a,1),1);&lt;br&gt;
&amp;gt; for i = 1:size(a,1)&lt;br&gt;
&amp;gt;     IDX(i) = find(a(i,:),1,'last');&lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Can it be done without the loop?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thanks a lot&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Oleg&lt;br&gt;
&lt;br&gt;
One of the many approaches:&lt;br&gt;
&lt;br&gt;
[i,idx] = max(cumsum(a,2),[],2)&lt;br&gt;
&lt;br&gt;
but what if a row has no ones?&lt;br&gt;
&lt;br&gt;
Jos</description>
    </item>
    <item>
      <pubDate>Wed, 01 Jul 2009 22:24:01 -0400</pubDate>
      <title>Re: Column Index</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/255127#662047</link>
      <author>Bruno Luong</author>
      <description>&quot;Oleg Komarov&quot; &amp;lt;oleg.komarov@hotmail.it&amp;gt; wrote in message &amp;lt;h2ghmp$t3a$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I have a matrix like this:&lt;br&gt;
&amp;gt; a = random('bino',1,0.5,[10,5]);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; And i want to find the colum index corresponding to the last 1 of each row:&lt;br&gt;
&amp;gt; IDX = NaN(size(a,1),1);&lt;br&gt;
&amp;gt; for i = 1:size(a,1)&lt;br&gt;
&amp;gt;     IDX(i) = find(a(i,:),1,'last');&lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
Using SplitVec on FEX &lt;a href=&quot;http://www.mathworks.com/matlabcentral/fileexchange/24255&quot;&gt;http://www.mathworks.com/matlabcentral/fileexchange/24255&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
IDX = NaN(size(a,1),1);&lt;br&gt;
&lt;br&gt;
[J I]=find(a.');&lt;br&gt;
last=SplitVec([I J],1,'last'); % On FEX&lt;br&gt;
IDX(I(last)) = J(last)&lt;br&gt;
&lt;br&gt;
% Bruno</description>
    </item>
    <item>
      <pubDate>Wed, 01 Jul 2009 22:46:01 -0400</pubDate>
      <title>Re: Column Index</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/255127#662053</link>
      <author>Oleg Komarov</author>
      <description>&quot;Bruno Luong&quot; &amp;lt;b.luong@fogale.findmycountry&amp;gt; wrote in message &amp;lt;h2gnm1$o91$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &quot;Oleg Komarov&quot; &amp;lt;oleg.komarov@hotmail.it&amp;gt; wrote in message &amp;lt;h2ghmp$t3a$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt; I have a matrix like this:&lt;br&gt;
&amp;gt; &amp;gt; a = random('bino',1,0.5,[10,5]);&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; And i want to find the colum index corresponding to the last 1 of each row:&lt;br&gt;
&amp;gt; &amp;gt; IDX = NaN(size(a,1),1);&lt;br&gt;
&amp;gt; &amp;gt; for i = 1:size(a,1)&lt;br&gt;
&amp;gt; &amp;gt;     IDX(i) = find(a(i,:),1,'last');&lt;br&gt;
&amp;gt; &amp;gt; end&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Using SplitVec on FEX &lt;a href=&quot;http://www.mathworks.com/matlabcentral/fileexchange/24255&quot;&gt;http://www.mathworks.com/matlabcentral/fileexchange/24255&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; IDX = NaN(size(a,1),1);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; [J I]=find(a.');&lt;br&gt;
&amp;gt; last=SplitVec([I J],1,'last'); % On FEX&lt;br&gt;
&amp;gt; IDX(I(last)) = J(last)&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; % Bruno&lt;br&gt;
Thank you very much Jos and Bruno&lt;br&gt;
&lt;br&gt;
TO: Jos&lt;br&gt;
I work with matrices which, by construction, in every row have at least one &quot;1&quot;.</description>
    </item>
  </channel>
</rss>

