-
Notifications
You must be signed in to change notification settings - Fork 1
/
size2.m
50 lines (45 loc) · 1.75 KB
/
size2.m
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
function [varargout] = size2(x,idx)
% Return specific size dimensions of input
%
% if one output, returns the size of x, indexed by idx
% if [o1,o2,..,on] = size2(x,idx), behaves in the following way:
% s = size(x); s = s(idx); [o1,o2,..,on] = deal(s(1),s(2),...,s(n))
% ======================================================================
% Copyright (c) 2012 David Weiss
%
% Permission is hereby granted, free of charge, to any person obtaining
% a copy of this software and associated documentation files (the
% "Software"), to deal in the Software without restriction, including
% without limitation the rights to use, copy, modify, merge, publish,
% distribute, sublicense, and/or sell copies of the Software, and to
% permit persons to whom the Software is furnished to do so, subject to
% the following conditions:
%
% The above copyright notice and this permission notice shall be
% included in all copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
% NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
% LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
% OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
% WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
% ======================================================================
s = size(x);
if nargin<2
idx = 1:max(length(s),nargout);
end
extra = max(idx)-length(s);
if extra > 0
s = [s ones(1,extra)];
end
s = s(idx);
if nargout <= 1
varargout = {s};
else
nout = max(nargout,1);
for i=1:nout,
varargout{i} = s(i);
end
end