<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/240088</link>
    <title>MATLAB Central Newsreader - matrix manipulation</title>
    <description>Feed for thread: matrix manipulation</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>Fri, 28 Nov 2008 21:02:47 -0500</pubDate>
      <title>matrix manipulation</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/240088#613778</link>
      <author>Ross</author>
      <description>Hi there,&lt;br&gt;
&lt;br&gt;
I have a question regarding matrix manipulation. I am using a 'brute force' method, but I guess there might be a straightforward way to do this that I am not aware of.&lt;br&gt;
&lt;br&gt;
Assume you have array A, s.t. [N1 N2 N3] = size(A).&lt;br&gt;
Also, assume you have a vector p, s.t. N1 = length(p), whose entries are integers between 1 and N3.&lt;br&gt;
&lt;br&gt;
You want to obtain a new matrix B, N1-by-N2 where the rows are selected using p.&lt;br&gt;
&lt;br&gt;
Example:&lt;br&gt;
A = [1 2;3 4];&lt;br&gt;
A(:,:,2) = [10 20;30 40]&lt;br&gt;
p = [1 2];&lt;br&gt;
&lt;br&gt;
B = [1 2; 30 40];&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Thanks!&lt;br&gt;
Ross</description>
    </item>
    <item>
      <pubDate>Fri, 28 Nov 2008 21:30:20 -0500</pubDate>
      <title>Re: matrix manipulation</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/240088#613780</link>
      <author>Bruno Luong</author>
      <description>Ross &amp;lt;fed.rossi@gmail.com&amp;gt; wrote in message &amp;lt;26885583.1227906197694.JavaMail.jakarta@nitrogen.mathforum.org&amp;gt;...&lt;br&gt;
&amp;gt; Hi there,&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I have a question regarding matrix manipulation. I am using a 'brute force' method, but I guess there might be a straightforward way to do this that I am not aware of.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Assume you have array A, s.t. [N1 N2 N3] = size(A).&lt;br&gt;
&amp;gt; Also, assume you have a vector p, s.t. N1 = length(p), whose entries are integers between 1 and N3.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; You want to obtain a new matrix B, N1-by-N2 where the rows are selected using p.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Example:&lt;br&gt;
&amp;gt; A = [1 2;3 4];&lt;br&gt;
&amp;gt; A(:,:,2) = [10 20;30 40]&lt;br&gt;
&amp;gt; p = [1 2];&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; B = [1 2; 30 40];&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
% Data&lt;br&gt;
A = [1 2;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3 4;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5 6];&lt;br&gt;
A(:,:,2) = [10 20;&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;30 40;&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;50 60]&lt;br&gt;
&lt;br&gt;
[N1 N2 N3]=size(A);&lt;br&gt;
&lt;br&gt;
p = [1 2 2];&lt;br&gt;
&lt;br&gt;
% Engine 1&lt;br&gt;
[I J]=ndgrid(1:N1,1:N2);&lt;br&gt;
K=repmat(p(:),1,N2);&lt;br&gt;
B = A(sub2ind(size(A),I,J,K))&lt;br&gt;
&lt;br&gt;
% Engine 2&lt;br&gt;
Ap=permute(A,[2 1 3]);&lt;br&gt;
B=Ap(:,sub2ind([N1 N3],1:N1,p)).'&lt;br&gt;
&lt;br&gt;
% Bruno</description>
    </item>
    <item>
      <pubDate>Fri, 28 Nov 2008 21:42:11 -0500</pubDate>
      <title>Re: matrix manipulation</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/240088#613781</link>
      <author>Walter Roberson</author>
      <description>Ross wrote:&lt;br&gt;
&amp;gt; Assume you have array A, s.t. [N1 N2 N3] = size(A).&lt;br&gt;
&amp;gt; Also, assume you have a vector p, s.t. N1 = length(p), whose entries are integers between 1 and N3.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; You want to obtain a new matrix B, N1-by-N2 where the rows are selected using p.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Example:&lt;br&gt;
&amp;gt; A = [1 2;3 4];&lt;br&gt;
&amp;gt; A(:,:,2) = [10 20;30 40]&lt;br&gt;
&amp;gt; p = [1 2];&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; B = [1 2; 30 40];&lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
That's pretty much the same task as was explored by a previous poster; you should be&lt;br&gt;
able to adapt the solution I gave in&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://groups.google.ca/group/comp.soft-sys.matlab/browse_thread/thread/2316f0c1c23f97b4&quot;&gt;http://groups.google.ca/group/comp.soft-sys.matlab/browse_thread/thread/2316f0c1c23f97b4&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
-- &lt;br&gt;
.signature note: I am now avoiding replying to unclear or ambiguous postings.&lt;br&gt;
Please review questions before posting them. Be specific. Use examples of what you mean,&lt;br&gt;
of what you don't mean. Specify boundary conditions, and data classes and value&lt;br&gt;
relationships -- what if we scrambled your data or used -Inf, NaN, or complex(rand,rand)?</description>
    </item>
    <item>
      <pubDate>Fri, 28 Nov 2008 22:22:34 -0500</pubDate>
      <title>Re: matrix manipulation</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/240088#613788</link>
      <author>Ross</author>
      <description>Thanks!</description>
    </item>
    <item>
      <pubDate>Fri, 28 Nov 2008 22:28:59 -0500</pubDate>
      <title>Re: matrix manipulation</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/240088#613789</link>
      <author>Ross</author>
      <description>ok, thanks</description>
    </item>
  </channel>
</rss>

