<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622</link>
    <title>MATLAB Central Newsreader - Contracting Matrices</title>
    <description>Feed for thread: Contracting Matrices</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>Sat, 27 Dec 2008 16:25:03 -0500</pubDate>
      <title>Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#618952</link>
      <author>Philosophaie </author>
      <description>I have a 4x4x4x4 matrices.  I want to contract one of the indices and make a 4x4x4 matrix.  The original matrix has both co and contra- varient components.  Here is a excerpt from my code:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j=1:4&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for k=1:4&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;for i=1:4&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;Ricci(j,k)=Ricci(j,k)+Riemann(j,k,i,i)&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>Sat, 27 Dec 2008 17:23:02 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#618958</link>
      <author>Roger Stafford</author>
      <description>&quot;Philosophaie&quot; &amp;lt;ertlejack@sbcglobal.net&amp;gt; wrote in message &amp;lt;gj5ksv$1mq$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I have a 4x4x4x4 matrices.  I want to contract one of the indices and make a 4x4x4 matrix.  The original matrix has both co and contra- varient components.  Here is a excerpt from my code:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     for j=1:4&lt;br&gt;
&amp;gt;         for k=1:4&lt;br&gt;
&amp;gt;            for i=1:4&lt;br&gt;
&amp;gt;             Ricci(j,k)=Ricci(j,k)+Riemann(j,k,i,i)&lt;br&gt;
&amp;gt;         end&lt;br&gt;
&amp;gt;     end&lt;br&gt;
&amp;gt; end&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;Try:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;temp = reshape(Riemann,4,4,[],1);&lt;br&gt;
&amp;nbsp;Ricci = squeeze(sum(temp(:,:,1:4+1:4*4,1),3));&lt;br&gt;
&lt;br&gt;
However it produces a 4x4 size, not 4x4x4.&lt;br&gt;
&lt;br&gt;
Roger Stafford</description>
    </item>
    <item>
      <pubDate>Sat, 27 Dec 2008 18:49:01 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#618967</link>
      <author>Philosophaie </author>
      <description>&amp;gt;  temp = reshape(Riemann,4,4,[],1);&lt;br&gt;
&amp;gt;  Ricci = squeeze(sum(temp(:,:,1:4+1:4*4,1),3));&lt;br&gt;
&amp;gt;  disp(Ricci(:,:))&lt;br&gt;
this produces a 1x4 matrix&lt;br&gt;
&lt;br&gt;
What am I doing wrong?</description>
    </item>
    <item>
      <pubDate>Sat, 27 Dec 2008 21:06:01 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#618973</link>
      <author>Roger Stafford</author>
      <description>&quot;Philosophaie&quot; &amp;lt;ertlejack@sbcglobal.net&amp;gt; wrote in message &amp;lt;gj5tat$jb2$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt;  temp = reshape(Riemann,4,4,[],1);&lt;br&gt;
&amp;gt; &amp;gt;  Ricci = squeeze(sum(temp(:,:,1:4+1:4*4,1),3));&lt;br&gt;
&amp;gt; &amp;gt;  disp(Ricci(:,:))&lt;br&gt;
&amp;gt; this produces a 1x4 matrix&lt;br&gt;
&amp;gt; What am I doing wrong?&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;I would suggest doing the 'size' operator at each stage.  You should get these results:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;size(Riemann) --&amp;gt; [4 4 4 4]&lt;br&gt;
&amp;nbsp;size(temp) --&amp;gt; [4 4 16 1]&lt;br&gt;
&amp;nbsp;size(temp(:,:,1:4+1:4*4,1)) --&amp;gt; [4 4 4 1]&lt;br&gt;
&amp;nbsp;size(sum(temp(:,:,1:4+1:4*4,1),3)) --&amp;gt; [4 4 1 1]&lt;br&gt;
&amp;nbsp;size(Ricci) --&amp;gt; [4 4]&lt;br&gt;
&lt;br&gt;
Where does yours differ from this?&lt;br&gt;
&lt;br&gt;
Roger Stafford</description>
    </item>
    <item>
      <pubDate>Sat, 27 Dec 2008 21:32:01 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#618977</link>
      <author>Philosophaie </author>
      <description>&quot;Roger Stafford&quot; &amp;lt;ellieandrogerxyzzy@mindspring.com.invalid&amp;gt; wrote in message &amp;lt;gj65bp$dhc$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &quot;Philosophaie&quot; &amp;lt;ertlejack@sbcglobal.net&amp;gt; wrote in message &amp;lt;gj5tat$jb2$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt; &amp;gt;  temp = reshape(Riemann,4,4,[],1);&lt;br&gt;
&amp;gt; &amp;gt; &amp;gt;  Ricci = squeeze(sum(temp(:,:,1:4+1:4*4,1),3));&lt;br&gt;
&amp;gt; &amp;gt; &amp;gt;  disp(Ricci(:,:))&lt;br&gt;
&amp;gt; &amp;gt; this produces a 1x4 matrix&lt;br&gt;
&amp;gt; &amp;gt; What am I doing wrong?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;   I would suggest doing the 'size' operator at each stage.  You should get these results:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;  size(Riemann) --&amp;gt; [4 4 4 4]&lt;br&gt;
&amp;gt;  size(temp) --&amp;gt; [4 4 16 1]&lt;br&gt;
&amp;gt;  size(temp(:,:,1:4+1:4*4,1)) --&amp;gt; [4 4 4 1]&lt;br&gt;
&amp;gt;  size(sum(temp(:,:,1:4+1:4*4,1),3)) --&amp;gt; [4 4 1 1]&lt;br&gt;
&amp;gt;  size(Ricci) --&amp;gt; [4 4]&lt;br&gt;
&lt;br&gt;
My results were:&lt;br&gt;
size(Riemann) --&amp;gt; [4 4 4 4]&lt;br&gt;
size(temp) --&amp;gt; [4 4 16]&lt;br&gt;
size(sum(temp(:,:,1:4+1:4*4,1),3)) --&amp;gt; [4 1]&lt;br&gt;
size(Ricci) --&amp;gt; [4 1]&lt;br&gt;
&lt;br&gt;
What does the &quot;3&quot; do in the sum command.  Where am I going wrong?</description>
    </item>
    <item>
      <pubDate>Sat, 27 Dec 2008 22:27:01 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#618982</link>
      <author>Roger Stafford</author>
      <description>&quot;Philosophaie&quot; &amp;lt;ertlejack@sbcglobal.net&amp;gt; wrote in message &amp;lt;gj66sh$dfj$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; ......&lt;br&gt;
&amp;gt; My results were:&lt;br&gt;
&amp;gt; size(Riemann) --&amp;gt; [4 4 4 4]&lt;br&gt;
&amp;gt; size(temp) --&amp;gt; [4 4 16]&lt;br&gt;
&amp;gt; size(sum(temp(:,:,1:4+1:4*4,1),3)) --&amp;gt; [4 1]&lt;br&gt;
&amp;gt; size(Ricci) --&amp;gt; [4 1]&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; What does the &quot;3&quot; do in the sum command.  Where am I going wrong?&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;If my understanding is correct, 'reshape' of a [4 4 4 4] array should have given you [4 4 16 1], not [4 4 16].&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;What did you get for size(temp(:,:,1:4+1:4*4,1))?  It should have been [4 4 4 1] or with the above result [4 4 4].  Given the above [4 4 16] result, the expression temp(:,:,1:4+1:4*4,1) should have given an error.  Did it?&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;In any case, the 'sum' action should have been along the third dimension and left you with a size of [4 4 1] or at worst [4 4].  It looks as though your 'sum' paid no attention to the '3' parameter, which directs summation to that third dimension.  There should also have been an error indicated for the presence of the parameter '3' if your 'sum' wasn't recognizing a second parameter.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;I have no way of accounting for your results.  What version of matlab did you use?&lt;br&gt;
&lt;br&gt;
Roger Stafford</description>
    </item>
    <item>
      <pubDate>Sun, 28 Dec 2008 09:20:03 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#619008</link>
      <author>Bruno Luong</author>
      <description>&quot;Roger Stafford&quot; &amp;lt;ellieandrogerxyzzy@mindspring.com.invalid&amp;gt; wrote in message &amp;lt;gj6a3l$nt3$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;   What did you get for size(temp(:,:,1:4+1:4*4,1))?  It should have been [4 4 4 1] or with the above result [4 4 4].  Given the above [4 4 16] result, the expression temp(:,:,1:4+1:4*4,1) should have given an error.  Did it?&lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
Roger,&lt;br&gt;
&lt;br&gt;
singleton in the last dimension is automatically removed by Matlab.&lt;br&gt;
&lt;br&gt;
m x n x p x 1 array is exactly like m x n x p array.&lt;br&gt;
&lt;br&gt;
Bruno</description>
    </item>
    <item>
      <pubDate>Mon, 29 Dec 2008 03:35:24 -0500</pubDate>
      <title>Re: Contracting Matrices</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/241622#619061</link>
      <author>Steven Lord</author>
      <description>&lt;br&gt;
&quot;Roger Stafford&quot; &amp;lt;ellieandrogerxyzzy@mindspring.com.invalid&amp;gt; wrote in &lt;br&gt;
message news:gj65bp$dhc$1@fred.mathworks.com...&lt;br&gt;
&amp;gt; &quot;Philosophaie&quot; &amp;lt;ertlejack@sbcglobal.net&amp;gt; wrote in message &lt;br&gt;
&amp;gt; &amp;lt;gj5tat$jb2$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;  temp = reshape(Riemann,4,4,[],1);&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;  Ricci = squeeze(sum(temp(:,:,1:4+1:4*4,1),3));&lt;br&gt;
&amp;gt;&amp;gt; &amp;gt;  disp(Ricci(:,:))&lt;br&gt;
&amp;gt;&amp;gt; this produces a 1x4 matrix&lt;br&gt;
&amp;gt;&amp;gt; What am I doing wrong?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;  I would suggest doing the 'size' operator at each stage.  You should get &lt;br&gt;
&amp;gt; these results:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; size(Riemann) --&amp;gt; [4 4 4 4]&lt;br&gt;
&amp;gt; size(temp) --&amp;gt; [4 4 16 1]&lt;br&gt;
&lt;br&gt;
Since SIZE drops trailing singleton dimensions, size(temp) should be [4 4 &lt;br&gt;
16].  Similarly, for the lines below, the trailing 1 is dropped.&lt;br&gt;
&lt;br&gt;
*snip*&lt;br&gt;
&lt;br&gt;
-- &lt;br&gt;
Steve Lord&lt;br&gt;
slord@mathworks.com </description>
    </item>
  </channel>
</rss>

