Be the first to rate this file! 3 Downloads (last 30 days) File Size: 2.09 KB File ID: #29691

Overloading SIZE for Array-like User-Defined Objects

by Matt J

 

13 Dec 2010 (Updated 14 Dec 2010)

A tool for OOP overloading of the size() method, imitating I/O conventions of MATLAB's native SIZE.

| Watch this File

File Information
Description

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.

MATLAB release MATLAB 7.9 (R2009b)
Tags for This File  
Everyone's Tags
dimension, dimensions, oop, size
Tags I've Applied
Add New Tags Please login to tag files.
Please login to add a comment or rating.
Updates
13 Dec 2010

Minor edit to the Description page. No new code.

14 Dec 2010

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

Contact us