All versions of Octave include a number of built-in data types, including real and complex scalars and matrices, character strings, and a data structure type.
It is also possible to define new specialized data types by writing a small amount of C++ code. On some systems, new data types can be loaded dynamically while Octave is running, so it is not necessary to recompile all of Octave just to add a new type. See Dynamically Linked Functions, for more information about Octave's dynamic linking capabilities. User-defined Data Types describes what you must do to define a new data type for Octave.