Смотрите save
и функции load
и Сохраните и Процесс Загрузки для Объектов для получения общей информации о сохранении и загружаемых объектах.
Чтобы видеть список имен перечисления, заданных классом, используйте функцию enumeration
.
Когда вы сохраняете перечисления, которые выводят от встроенных классов или которые являются основанными на значении классами со свойствами, MATLAB® сохраняет имена участников перечисления и определение каждого участника.
При загрузке этих перечислений MATLAB сохраняет имена по базовым значениям. Если сохраненное именованное значение отличается от текущего определения класса, MATLAB использует значение, заданное в текущем классе, и затем выдает предупреждение.
Когда вы сохраняете простые перечисления, которые не имеют никаких свойств, суперклассов или значений, сопоставленных с именами элемента или перечислениями, выведенными от класса handle
, MATLAB сохраняет имена и любые базовые значения.
При загрузке этих типов перечислений MATLAB не проверяет значения, сопоставленные с именами в текущем определении класса. Это поведение следует из того, что простые перечисления не имеют никаких базовых значений, и основанные на указателе перечисления могут по закону иметь значения, которые отличаются, чем те значения, заданные классом.
Загрузка как struct Вместо Объекта
Если вы добавляете новое именованное значение или новое свойство к классу после сохранения перечисления, MATLAB не предупреждает во время загрузки.
Если изменения в определении класса перечисления не препятствуют тому, чтобы MATLAB загрузил объект (то есть, все именованные значения в MAT-файле присутствуют в определении модифицированного класса), то MATLAB выдает предупреждение, что класс изменил и загружает перечисление.
В следующих случаях MATLAB выдает предупреждение и загружает как можно больше сохраненных данных как struct
:
MATLAB не может найти определение класса
Класс больше не является классом перечисления
MATLAB не может инициализировать класс
Существует один или несколько участников перечисления в загруженном перечислении, которое не находится в определении класса
Если класс является основанным на значении перечислением со свойствами и свойством, которое существует в файле, не присутствует в определении класса
поля struct
Возвращенный struct
имеет эти поля:
ValueNames
— Массив ячеек строк, один на уникальное значение в массиве перечисления.
Значения
Массив той же размерности как ValueNames
, содержащий соответствующие значения участников перечисления, называют в ValueNames
. В зависимости от вида класса перечисления Values
может быть одним из следующего:
Если класс перечисления выводит от встроенного класса, класс массивов совпадает со встроенным классом. Значения в массиве являются базовыми значениями каждого участника перечисления.
В противном случае, массив struct
, представляющий имя свойства — пары значений свойств каждого участника перечисления. Для простых и основанных на указателе перечислений массив struct
не имеет никаких полей.
ValueIndices
— массив uint32
, одного размера как исходное перечисление. Каждый элемент является индексом в массивы Values
и ValueNames
. Содержимое ValueIndices
представляет значение каждого объекта в исходном массиве перечисления.