File: array_shiftdim.html

package info (click to toggle)
freemat 4.2%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 141,800 kB
  • ctags: 14,082
  • sloc: ansic: 126,788; cpp: 62,046; python: 2,080; perl: 1,255; sh: 1,146; yacc: 1,019; lex: 239; makefile: 100
file content (124 lines) | stat: -rw-r--r-- 4,728 bytes parent folder | download | duplicates (2)
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&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;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">--&gt; x = uint8(10*randn(1,1,1,3,2));
--&gt; [y,n] = shiftdim(x);
--&gt; n

ans = 
 3 

--&gt; size(y)

ans = 
 3 2 

--&gt; c = shiftdim(y,-n);
--&gt; size(c)

ans = 
 1 1 1 3 2 

--&gt; 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">--&gt; z = shiftdim(x,4);
</pre><p>Note that <code>z</code> is now the transpose of <code>x</code></p>
<pre class="fragment">--&gt; squeeze(x)

ans = 
 11  1 
  0  0 
  0  8 

--&gt; 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>