1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FreeMat: SHIFTDIM Shift Array Dimensions Function</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">FreeMat
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('array_shiftdim.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">SHIFTDIM Shift Array Dimensions Function </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Section: <a class="el" href="sec_array.html">Array Generation and Manipulations</a> </p>
<h1><a class="anchor" id="Usage"></a>
Usage</h1>
<p>The <code>shiftdim</code> function is used to shift the dimensions of an array. The general syntax for the <code>shiftdim</code> function is </p>
<pre class="fragment"> y = shiftdim(x,n)
</pre><p> where <code>x</code> is a multidimensional array, and <code>n</code> is an integer. If <code>n</code> is a positive integer, then <code>shiftdim</code> circularly shifts the dimensions of <code>x</code> to the left, wrapping the dimensions around as necessary. If <code>n</code> is a negative integer, then <code>shiftdim</code> shifts the dimensions of <code>x</code> to the right, introducing singleton dimensions as necessary. In its second form: </p>
<pre class="fragment"> [y,n] = shiftdim(x)
</pre><p> the <code>shiftdim</code> function will shift away (to the left) the leading singleton dimensions of <code>x</code> until the leading dimension is not a singleton dimension (recall that a singleton dimension <code>p</code> is one for which <code>size(x,p) == 1</code>). </p>
<h1><a class="anchor" id="Example"></a>
Example</h1>
<p>Here are some simple examples of using <code>shiftdim</code> to remove the singleton dimensions of an array, and then restore them:</p>
<pre class="fragment">--> x = uint8(10*randn(1,1,1,3,2));
--> [y,n] = shiftdim(x);
--> n
ans =
3
--> size(y)
ans =
3 2
--> c = shiftdim(y,-n);
--> size(c)
ans =
1 1 1 3 2
--> any(c~=x)
ans =
(:,:,1,1,1) =
0
(:,:,1,1,2) =
0
</pre><p>Note that these operations (where shifting involves only singleton dimensions) do not actually cause data to be resorted, only the size of the arrays change. This is not true for the following example, which triggers a call to <code>permute</code>:</p>
<pre class="fragment">--> z = shiftdim(x,4);
</pre><p>Note that <code>z</code> is now the transpose of <code>x</code></p>
<pre class="fragment">--> squeeze(x)
ans =
11 1
0 0
0 8
--> squeeze(z)
ans =
11 0 0
1 0 8
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">FreeMat Documentation</a></li><li class="navelem"><a class="el" href="sec_array.html">Array Generation and Manipulations</a></li>
<li class="footer">Generated on Thu Jul 25 2013 18:58:11 for FreeMat by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
</ul>
</div>
</body>
</html>
|