Доступ и изменение переменных в MAT-файле без загрузки файла в память
Используйте объект MAT-файла для доступа и изменения переменных в MAT-файле без загрузки файла в память. Можно загружать или сохранять части переменных. Частичная загрузка и сохранение переменных с помощью объекта MAT-файла требует меньше памяти, чем load
и save
команды.
создает matObj
= matfile(filename
)matlab.io.MatFile
объект, соединенный с MAT-файлом, заданным filename
.
Объект MAT-файла позволяет вам получить доступ и изменить переменные непосредственно в MAT-файле, не загружая переменные в память.
включает или отключает доступ для записи в файл. Задайте matObj
= matfile(filename
,'Writable',isWritable
)isWritable
как true
или false
.
size | Получите измерения массива переменной в MAT-файле
Примечание: Не вызывайте |
who | Получите список переменных в MAT-файле
|
whos | Получите список переменных в MAT-файле с размерами и типами
|
При доступе к частям переменных в MAT-файлах путем индексации:
Линейная индексация не поддерживается. Необходимо задать индексы для всех размерностей.
Назначение комплексных чисел индексированным фрагментам реального массива не поддерживается.
Для разреженных массивов в MAT-файле, объект MAT-файла:
Поддерживает чтение подмножества разреженного массива путем индексации.
Не поддерживает запись (назначение значений) подмножеству разреженного массива путем индексации.
Объект MAT-файла не поддерживает индексацию в:
Переменные таблиц
Камеры из массивов ячеек
Строковые массивы
Поля массивов структур
Пользовательские классы
Объект MAT-файла не поддерживает оценку указателей на функцию с помощью m
выход. Например, если ваш MAT-файл содержит указатель на функцию myfunc
, синтаксис m.myfunc()
пытается индексировать в указатель на функцию и не вызывает функцию.
При сохранении объекта-указателя MATLAB сохраняет копию объекта, а не копию указателя. Поэтому изменение объекта через его указатель в рабочей области, из которого был сохранен объект, не изменяет сохраненный объект указателя.
Для эффективной частичной загрузки и сохранения требуются MAT-файлы версии 7.3. Чтобы создать MAT-файл версии 7.3, вызовите save
функция со '-v7.3'
опция. Например, чтобы преобразовать существующий MAT-файл с именем durer.mat
в версию 7.3 вызовите:
load('durer.mat'); save('mycopy_durer.mat','-v7.3');
Использование end
ключевое слово как часть индекса заставляет MATLAB загружать в память целую переменную. Для очень больших переменных эта операция загрузки приводит к Out
of
Memory
ошибки. Вместо того, чтобы использовать end
, определите степень переменной со size
метод:
sizeMyVar = size(matObj,'myVar')