MATLAB: How to create a sparse vector of class objects

classoopsparse

Dear all!
My aim is to write a class to handle locations in 3-d space (let's call it 'CoordinateClass'). Therefore I need to store the three coordinates (along with – at the moment – three other values) in an array. Each set of coordinate must have a unique ID. These IDs range from 0 to let's say 1e6 and are chosen by the user. The current solution is to use a sparse array. The coordinates are stored in the row corresponding to the ID.
What is the best way to get this scenario into a class? I could define a sparse array as the class property and work with that. But it is not as easy as to use a vector of objects like
C(1) = CoordinateClass([1 1 1 0 0 0]) % 3-d point at (1,1,1) with ID 1
C(100) = CoordinateClass([100 2 1 0 0 0]) % 3-d point at (100,2,1) with ID 100
The index is the user-defined ID. The problem is the memory usage. If I use large ID values all objects below are allocated as well. Is there a way to implement some kind of "sparse object" to decrease memory usage?
Thanks in advance

Best Answer

You don't want to have a separate C(i) for each coordinate. That will allocate memory very inefficiently. You want a single object which holds your coordinate and other data as an array, e.g.,
classdef CoordinateClass
properties
coordinates;
IDs;
ThreeOtherValues;
end
end
and now you would have
C.coordinates=[1 1 1; 100 2 1; etc...]
C.IDs=[1;100; etc...]
C.ThreeOtherValues=[0 0 0; 0 0 0; etc...]