Overloading SIZE for Array-like User-Defined Objects

版本 1.2.0.0 (2.1 KB) 作者: Matt J
A tool for OOP overloading of the size() method, imitating I/O conventions of MATLAB's native SIZE.
358.0 次下载
更新时间 2010/12/14

查看许可证

parseSize - a function to aid OOP overloading of the size() method in user-defined classes. If the user provides the vector of dimensions of a hypothetical array object, parseSize will take care of the main input/output argument processing in a way that imitates the conventions of MATLAB's usual SIZE function.

EXAMPLE: consider the following class and notice how parseSize is used to implement the SIZE method in a single line,

classdef myClass
properties
dimension
end % properties

methods
function varargout=size(obj,varargin)
varargout=parseSize(obj.dimension,nargout,varargin{:});
end
end
end


In the next several examples, we see that all of the same calling syntaxes as for the usual MATLAB size() function are now enabled for this class:

>> obj=myClass; obj.dimension=[3,5,4,1];

>> [m,n,p,q,r,s]=size(obj); [m,n,p,q,r,s]

ans =

3 5 4 1 1 1

>> [m,n]=size(obj); [m,n]

ans =

3 20

>> s=size(obj)

s =

3 5 4


>> s2=size(obj,2)

s2 =

5


SYNTAX:

argsout=parseSize(dimensions,numargsout,dim)

in:

dimensions: A vector specifying the dimensions of a hypothetical array-like
object. Trailing ones are permitted.

numargsout: The number of requested outputs in a call to the class'
size method, e.g., for [m,n,p]=size(obj) a value of
numargsout=3 should be passed to parseSize.

dim: if the calling syntax to the class's size method is size(obj,i),
one would pass dim=i to parseSize.

out:

argsout: a cell array to be passed as the varargout of the size method.

引用格式

Matt J (2024). Overloading SIZE for Array-like User-Defined Objects (https://www.mathworks.com/matlabcentral/fileexchange/29691-overloading-size-for-array-like-user-defined-objects), MATLAB Central File Exchange. 检索时间: .

MATLAB 版本兼容性
创建方式 R2009b
兼容任何版本
平台兼容性
Windows macOS Linux
类别
Help CenterMATLAB Answers 中查找有关 Argument Definitions 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
版本 已发布 发行说明
1.2.0.0

Small bug fix. The case where the array dimension=[1,1,1,...1] was not correctly handled.

1.1.0.0

Minor edit to the Description page. No new code.

1.0.0.0