<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/254099</link>
    <title>MATLAB Central Newsreader - divide and conquer matrix</title>
    <description>Feed for thread: divide and conquer matrix</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>Thu, 18 Jun 2009 20:46:02 -0400</pubDate>
      <title>divide and conquer matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/254099#658597</link>
      <author>Diego Lass</author>
      <description>Hi &lt;br&gt;
I have a problem with a large matrix, what I want to do is to divide the matrix into 4 submatrices, do some operation then reassemble the submatrix together.  A toy example&lt;br&gt;
&lt;br&gt;
A = [1 2 3 ; 3 4 5 ; 2 3 4; 5 1 2 ]&lt;br&gt;
A =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1     2     3&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3     4     5&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2     3     4&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5     1     2&lt;br&gt;
&amp;nbsp;I want to divide A into ANY approximately equal sized partitions, for example&lt;br&gt;
1 2 &lt;br&gt;
3 4 &lt;br&gt;
&lt;br&gt;
3&lt;br&gt;
5&lt;br&gt;
&lt;br&gt;
2 3 &lt;br&gt;
5 1 &lt;br&gt;
&lt;br&gt;
4&lt;br&gt;
2&lt;br&gt;
&lt;br&gt;
then do some operation, say add 2 to each element.  Then reassemble them together, to get&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3     4     5&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5     6     7&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4     5     6&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7     3     4&lt;br&gt;
What is the most efficient way of doing this?&lt;br&gt;
Thanks&lt;br&gt;
Diego</description>
    </item>
    <item>
      <pubDate>Fri, 19 Jun 2009 00:59:02 -0400</pubDate>
      <title>Re: divide and conquer matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/254099#658640</link>
      <author>Nicolaie Popescu-Bodorin</author>
      <description>-use powers of two as much as possible;&lt;br&gt;
-see blkproc (caution with implicit padding);&lt;br&gt;
-if the matrix is huge, consider mex using;&lt;br&gt;
-column is the &quot;fast dimension&quot;; this could be helpful;&lt;br&gt;
&lt;br&gt;
Bodorin&lt;br&gt;
&lt;br&gt;
&quot;Diego Lass&quot; &amp;lt;dlISCool@gmail.com&amp;gt; wrote in message &amp;lt;h1e92a$bd7$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Hi &lt;br&gt;
&amp;gt; I have a problem with a large matrix, what I want to do is to divide the matrix into 4 submatrices, do some operation then reassemble the submatrix together.  A toy example&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; A = [1 2 3 ; 3 4 5 ; 2 3 4; 5 1 2 ]&lt;br&gt;
&amp;gt; A =&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;      1     2     3&lt;br&gt;
&amp;gt;      3     4     5&lt;br&gt;
&amp;gt;      2     3     4&lt;br&gt;
&amp;gt;      5     1     2&lt;br&gt;
&amp;gt;  I want to divide A into ANY approximately equal sized partitions, for example&lt;br&gt;
&amp;gt; 1 2 &lt;br&gt;
&amp;gt; 3 4 &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 3&lt;br&gt;
&amp;gt; 5&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 2 3 &lt;br&gt;
&amp;gt; 5 1 &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 4&lt;br&gt;
&amp;gt; 2&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; then do some operation, say add 2 to each element.  Then reassemble them together, to get&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;      3     4     5&lt;br&gt;
&amp;gt;      5     6     7&lt;br&gt;
&amp;gt;      4     5     6&lt;br&gt;
&amp;gt;      7     3     4&lt;br&gt;
&amp;gt; What is the most efficient way of doing this?&lt;br&gt;
&amp;gt; Thanks&lt;br&gt;
&amp;gt; Diego</description>
    </item>
    <item>
      <pubDate>Fri, 19 Jun 2009 09:40:18 -0400</pubDate>
      <title>Re: divide and conquer matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/254099#658700</link>
      <author>Jos </author>
      <description>&quot;Diego Lass&quot; &amp;lt;dlISCool@gmail.com&amp;gt; wrote in message &amp;lt;h1e92a$bd7$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Hi &lt;br&gt;
&amp;gt; I have a problem with a large matrix, what I want to do is to divide the matrix into 4 submatrices, do some operation then reassemble the submatrix together.  A toy example&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; A = [1 2 3 ; 3 4 5 ; 2 3 4; 5 1 2 ]&lt;br&gt;
&amp;gt; A =&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;      1     2     3&lt;br&gt;
&amp;gt;      3     4     5&lt;br&gt;
&amp;gt;      2     3     4&lt;br&gt;
&amp;gt;      5     1     2&lt;br&gt;
&amp;gt;  I want to divide A into ANY approximately equal sized partitions, for example&lt;br&gt;
&amp;gt; 1 2 &lt;br&gt;
&amp;gt; 3 4 &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 3&lt;br&gt;
&amp;gt; 5&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 2 3 &lt;br&gt;
&amp;gt; 5 1 &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 4&lt;br&gt;
&amp;gt; 2&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; then do some operation, say add 2 to each element.  Then reassemble them together, to get&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;      3     4     5&lt;br&gt;
&amp;gt;      5     6     7&lt;br&gt;
&amp;gt;      4     5     6&lt;br&gt;
&amp;gt;      7     3     4&lt;br&gt;
&amp;gt; What is the most efficient way of doing this?&lt;br&gt;
&amp;gt; Thanks&lt;br&gt;
&amp;gt; Diego&lt;br&gt;
&lt;br&gt;
The definition of &quot;efficient&quot; is open to many interpretations ... Here is an example that is not particularly fast, but quite flexible:&lt;br&gt;
&lt;br&gt;
% your data&lt;br&gt;
&amp;nbsp;&amp;nbsp;A = [1 2 3 ; 3 4 5 ; 2 3 4; 5 1 2 ]&lt;br&gt;
&amp;nbsp;&amp;nbsp;myfun = @(X) 1110 * X(1) + X ;&lt;br&gt;
&lt;br&gt;
% engine&lt;br&gt;
&amp;nbsp;&amp;nbsp;C = mat2cell(A,[2 2],[2 1]) ;&lt;br&gt;
&amp;nbsp;&amp;nbsp;C = cellfun(myfun, C,'uniformoutput',false) ;&lt;br&gt;
&amp;nbsp;&amp;nbsp;B = cell2mat(C) &lt;br&gt;
&lt;br&gt;
hth&lt;br&gt;
Jos</description>
    </item>
  </channel>
</rss>

