VVAR uses a pre-existing "scratch" file to store variables and can be used to pre-allocate a huge array much faster than using zeros. On a MacBook Pro with 64 bit MATLAB and 4Gb RAM, creating an 8Gb double array with VVAR was 100x faster than using zeros (1.24s vs 122.3s).
Upper limits on array size are system and MATLAB version dependent. See the MATLAB documenation.
Note that speed improvements are seen only when the array is too large for the available memory and forces virtual memory use.
With some caveats, VVAR instances can be used in much the same way as MATLAB primitive array types, e.g.
% x curently contains garbage (not zeros) so
%... fill x with data ...
% Then filter each column e.g.:
x(:,k)=filtfilt(b, a, x(:,k));
A VVAR instance is simply a wrapper for the standard MATLAB memmapfile class that uses "nakhur" techniques to trick MATLAB into believing the VVAR instance is a MATLAB numeric matrix. This is achieved by having standard MATLAB methods return non-standard results. Effectively, the VVAR class instance pretends to be the primitive data that it represents so that the methods return results relevant to the contents of the instance not the instance itself e.g. with the instance above, isreal(x) returns true while size(x) returns [10000,10000]. Numel is not overloaded so numel(x) returns 1.
VVAR supports the full range of indexing options: subreferencing, linear and logical indexing etc.
Part of Project Waterloo from King's College London - see http://sigtool.sourceforge.net/
Malcolm Lidierth (2023). VVAR class: a fast "virtual" variable class for MATLAB. (https://www.mathworks.com/matlabcentral/fileexchange/34276-vvar-class-a-fast-virtual-variable-class-for-matlab), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!