📄 grow.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of grow</title> <meta name="keywords" content="grow"> <meta name="description" content=""> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="index.html">mri_toolbox</a> > grow.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for mri_toolbox <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>grow</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong></strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>function Y = grow(varargin) </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment">
GROW Expands a matrix.
Y = GROW(X,[M1 M2 ... Mn]) creates a matrix 'Y' by the expansion
of the matrix 'x' of Mi elements on directions i e -i. The size
of the new matrix 'Y' will be:
size(Y) = size(x) + 2*[M]
Example: X = [ 1 2 3; 4 5 6; 7 8 9]
Y = GROW(X,[1 0])
Y = [1 2 3; 1 2 3; 4 5 6; 7 8 9; 7 8 9]
Y = GROW(X,[1 1])
Y = [1 1 2 3 3; 1 1 2 3 3; 4 4 5 6 6; 7 7 8 9 9; 7 7 8 9 9]
Y = GROW(X) uses as standard Mi = 1.
If DIM(X)>1, GROW(X,N) = GROW(X,N*ones(DIM(x)))
Y = GROW(X,[M], 'a') performs assimetric expansion. If Mi is even
assimetric expansion is the same as simmetric expansion, execpt that
the expansion in the assimetric mode will be half of the one in the
simmetric mode. If Mi is odd, the matrix will be expanded ceil(Mi/2)
elements in the -i direction and floor(Mi/2) in the i. The size of
the expanded matrix will be:
size(y) = size(X) + [M]
[M] can contain negative integers. In this case, the outer elements
of X will be discarded.
See also ROLL, PAD, PADC, <a href="shrink.html" class="code" title="function [Y, varargout] = shrink(X,E)">SHRINK</a>.</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><ul style="list-style-image:url(../matlabicon.gif)"><li><a href="#_sub1" class="code">function [X,M,assimetric] = parse_inputs(varargin)</a></li></ul><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function Y = grow(varargin)</a>0002 <span class="comment">%</span>0003 <span class="comment">% GROW Expands a matrix.</span>0004 <span class="comment">%</span>0005 <span class="comment">% Y = GROW(X,[M1 M2 ... Mn]) creates a matrix 'Y' by the expansion</span>0006 <span class="comment">% of the matrix 'x' of Mi elements on directions i e -i. The size</span>0007 <span class="comment">% of the new matrix 'Y' will be:</span>0008 <span class="comment">% size(Y) = size(x) + 2*[M]</span>0009 <span class="comment">%</span>0010 <span class="comment">% Example: X = [ 1 2 3; 4 5 6; 7 8 9]</span>0011 <span class="comment">% Y = GROW(X,[1 0])</span>0012 <span class="comment">% Y = [1 2 3; 1 2 3; 4 5 6; 7 8 9; 7 8 9]</span>0013 <span class="comment">%</span>0014 <span class="comment">% Y = GROW(X,[1 1])</span>0015 <span class="comment">% Y = [1 1 2 3 3; 1 1 2 3 3; 4 4 5 6 6; 7 7 8 9 9; 7 7 8 9 9]</span>0016 <span class="comment">%</span>0017 <span class="comment">% Y = GROW(X) uses as standard Mi = 1.</span>0018 <span class="comment">%</span>0019 <span class="comment">% If DIM(X)>1, GROW(X,N) = GROW(X,N*ones(DIM(x)))</span>0020 <span class="comment">%</span>0021 <span class="comment">% Y = GROW(X,[M], 'a') performs assimetric expansion. If Mi is even</span>0022 <span class="comment">% assimetric expansion is the same as simmetric expansion, execpt that</span>0023 <span class="comment">% the expansion in the assimetric mode will be half of the one in the</span>0024 <span class="comment">% simmetric mode. If Mi is odd, the matrix will be expanded ceil(Mi/2)</span>0025 <span class="comment">% elements in the -i direction and floor(Mi/2) in the i. The size of</span>0026 <span class="comment">% the expanded matrix will be:</span>0027 <span class="comment">% size(y) = size(X) + [M]</span>0028 <span class="comment">%</span>0029 <span class="comment">% [M] can contain negative integers. In this case, the outer elements</span>0030 <span class="comment">% of X will be discarded.</span>0031 <span class="comment">%</span>0032 <span class="comment">% See also ROLL, PAD, PADC, SHRINK.</span>0033 <span class="comment">%</span>0034 0035 0036 [X, M, assimetric] = <a href="#_sub1" class="code" title="subfunction [X,M,assimetric] = parse_inputs(varargin)">parse_inputs</a>(varargin{:});0037 0038 ind = cell(length(M),1);0039 0040 <span class="keyword">if</span> assimetric == 00041 <span class="keyword">for</span> i = 1 : length(M)0042 <span class="keyword">if</span> M(i) >= 00043 ind{i} = [repmat(1,[1 M(i)]) 1:size(X,i) repmat(size(X,i),[1 M(i)]) ];0044 <span class="keyword">else</span>0045 ind{i} = 1+(-M(i)) : size(X,i)-(-M(i)); <span class="comment">% using -M(i) to change sign</span>0046 <span class="keyword">end</span>0047 <span class="keyword">end</span>0048 <span class="keyword">else</span> <span class="comment">% if not assimetric</span>0049 <span class="keyword">for</span> i = 1 : length(M)0050 <span class="keyword">if</span> M(i) >= 00051 ind{i} = [repmat(1,[1 ceil(M(i)/2)]) 1:size(X,i) repmat(size(X,i),[1 floor(M(i)/2)]) ];0052 <span class="keyword">else</span>0053 ind{i} = 1+ceil(-M(i)/2) : size(X,i) - floor(-M(i)/2);0054 <span class="keyword">end</span>0055 <span class="keyword">end</span>0056 <span class="keyword">end</span>0057 0058 Y = X(ind{:});0059 0060 0061 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0062 <a name="_sub1" href="#_subfunctions" class="code">function [X,M,assimetric] = parse_inputs(varargin)</a>0063 assimetric = 0;0064 0065 <span class="keyword">switch</span> nargin0066 <span class="keyword">case</span> 00067 error(<span class="string">'Too few inputs!'</span>)0068 <span class="keyword">return</span>0069 0070 <span class="keyword">case</span> 10071 X = varargin{1};0072 M = ones(1,ndims(X));0073 0074 <span class="keyword">case</span> 20075 X = varargin{1};0076 M = varargin{2};0077 <span class="keyword">if</span> strcmp(M,<span class="string">'a'</span>)0078 M = ones(1,ndims(X));0079 assimetric = 1;0080 <span class="keyword">end</span>0081 0082 <span class="keyword">case</span> 30083 X = varargin{1};0084 M = varargin{2};0085 <span class="keyword">if</span> ~strcmp(<span class="string">'a'</span>, lower(varargin{3}))0086 error(<span class="string">'Unknown parameter.'</span>);0087 <span class="keyword">end</span>0088 assimetric = 1;0089 0090 <span class="keyword">case</span> 40091 error(<span class="string">'Too many inputs!'</span>)0092 <span class="keyword">return</span>0093 <span class="keyword">end</span>0094 0095 <span class="keyword">if</span> length(M)==1 0096 <span class="keyword">if</span> sum(size(X)>1)>10097 M = M*ones(1,ndims(X));0098 <span class="keyword">elseif</span> ndims(X)==2 & size(X,1)==1 & size(X,2)>10099 M = [0 M];0100 <span class="keyword">elseif</span> ndims(X)==2 & size(X,1)>1 & size(X,2)==10101 M = [M 0];0102 <span class="keyword">end</span>0103 <span class="keyword">end</span>0104 0105 <span class="keyword">if</span> length(M)~=ndims(X)0106 error(<span class="string">'Invalid dimensions'</span>)0107 <span class="keyword">end</span>0108</pre></div><hr><address>Generated on Fri 21-May-2004 12:38:21 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -