Пакет: matlab.io
Загрузите и сохраните части переменных в MAT-файлах
Функция matfile
создает объект matlab.io.MatFile
, который соответствует MAT-файлу, такой как
matObj = matfile('myFile.mat')
Переменные доступа в MAT-файле как свойства matObj
, с записью через точку, подобной доступу к полям структур. Синтаксис для загрузки и сохранения части переменной varName
в MAT-файле, соответствующем matObj
:
loadedData = matObj.varName(indices); % Load into workspace matObj.varName(indices) = dataToSave; % Save to file
При индексации задайте индексы для всех размерностей. Индексы могут быть одним значением, равномерно распределенной областью значений увеличения значений или двоеточия (:)
, такой как
matObj.varName(100:500, 200:600) matObj.varName(:, 501:1000) matObj.varName(1:2:1000, 80)
Используя ключевое слово end
, когда часть индекса заставляет MATLAB® загружать целую переменную в память. Для очень больших переменных эта операция загрузки приводит к Out
of
ошибки Memory
. Вместо того, чтобы использовать end
, определите степень переменной с методом size
, таким как:
sizeMyVar = size(matObj,'myVar')
matfile
не поддерживает линейную индексацию. Необходимо задать индексы для всех размерностей.
matfile
не поддерживает индексацию в:
Ячейки массивов ячеек
Поля структур
Пользовательские классы
Разреженные массивы
Вы не можете присвоить комплексные числа индексируемому фрагменту действительного массива.
Вы не можете оценить указатели на функцию с помощью объекта MatFile
. Например, если ваш MAT-файл содержит указатель на функцию myfunc
, синтаксис matObj.myfunc()
пытается индексировать в указатель на функцию и не вызывает функцию.
создает объект matObj
= matfile(filename
)matlab.io.MatFile
, который может загрузить или сохранить части переменных в MAT-файле filename
. MATLAB не загружает данных из файла в память при создании объекта.
включает или отключает доступ для записи к файлу для объекта matObj
= matfile(filename
,'Writable'
,isWritable
)matObj
. Возможными значениями для isWritable
является логический true
(1
) или false
(0
).
|
Вектор символов, который задает имя MAT-файла.
Если файл не существует,
| ||||
|
Параметр, чтобы использовать с аргументом | ||||
|
Логическое значение, которое задает, позволить ли сохранять в файл. Возможные значения:
Значение по умолчанию: |
|
Вектор символов, который содержит полностью определенный путь к файлу. Только для чтения. | ||||
|
Логическое значение, которое задает, позволить ли сохранять в файл. Возможные значения:
Значение по умолчанию: |
размер | ArrayDimensions |
кто | Имена переменных в MAT-файле |
кто | Имена, размеры и типы переменных в MAT-файле |
Вы не можете получить доступ к справке для этих методов с помощью команды help
. Найдите справку на методах из командной строки с помощью команды doc
, таких как doc matlab.io.MatFile/size
.
Указатель. Чтобы узнать, как классы Handle влияют на операции копирования, см. раздел "Копирование объектов".
Создайте myFile.mat
во временной папке и сохраните данные к части переменной savedVar
:
filename = fullfile(tempdir,'myFile.mat'); matObj = matfile(filename); matObj.savedVar(81:100,81:100) = magic(20);
Загрузите часть данных в переменную loadVar
:
loadVar = matObj.savedVar(85:94,85:94);
Загрузите или сохраните целую переменную путем исключения индексов. Например, загрузите переменную topo
из topography.mat
:
filename = 'topography.mat'; matObj = matfile(filename); topo = matObj.topo;
Определите размерности переменной и обработайте одну часть переменной за один раз. В этом случае вычислите и сохраните среднее значение каждого столбца переменной stocks
в файле в качестве примера stocks.mat
:
filename = 'stocks.mat'; matObj = matfile(filename); [nrows, ncols] = size(matObj,'stocks'); avgs = zeros(1,ncols); for idx = 1:ncols avgs(idx) = mean(matObj.stocks(:,idx)); end
По умолчанию matfile
только поддерживает данные о загрузке из существующих файлов. Чтобы позволить сохранить, установите Writable
на true
любой во время конструкции объекта,
filename = 'myFile.mat'; matObj = matfile(filename,'Writable',true);
или на отдельном шаге, установкой Properties.Writable
:
filename = 'myFile.mat'; matObj = matfile(filename); matObj.Properties.Writable = true;