Dynamic-Calibration/utils/YALMIP-master/extras/@ndsdpvar/size.m

29 lines
710 B
Mathematica
Raw Permalink Normal View History

2019-12-18 11:25:45 +00:00
function varargout = size(X,d)
% SIZE (overloaded)
if nargin == 1 && nargout > 1 && nargout == length(X.dim)
for i = 1:length(X.dim);
varargout{i} = X.dim(i);
end
return
elseif nargin == 1 && nargout > 1 && nargout < length(X.dim)
% Weird but this is MATLAB standard
for i = 1:nargout-1
varargout{i} = X.dim(i);
end
varargout{end+1} = prod(X.dim(nargout:end));
return
end
if nargin == 1
varargout{1} = X.dim;
else
if (d < 1) || d~=round(d)
error('Dimension argument must be a positive integer scalar in the range 1 to 2^31.');
end
if d <= length(X.dim)
varargout{1} = X.dim(d);
else
varargout{1} = 1;
end
end