matlab.io. Класс MatFile

Пакет: 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).

Входные параметры

fileName

Вектор символа, который задает имя MAT-файла.

filename может включать весь или частичный путь, в противном случае matfile ищет файл вдоль пути поиска файлов MATLAB. Если filename не включает расширение, matfile добавляет .mat.

Если файл не существует, matfile создает MAT-файл Версии 7.3 на первом присвоении на переменную.

matfile только поддерживает частичную загрузку и сохранение для MAT-файлов в формате Версии 7.3 (описанный в Версиях MAT-файла). Если вы индексируете в переменную в Версии 7 (текущее значение по умолчанию) или более ранний MAT-файл, MATLAB предупреждает и временно загружает целое содержимое переменной.

'Writable'

Параметр, чтобы использовать с аргументом isWritable.

isWritable

Логическое значение, которое задает, позволить ли сохранять в файл. Возможные значения:

true (1)Позвольте сохранить. Если файл только для чтения, измените системные полномочия с fileattrib.
false (0)Отключите сохранение с matfile. MATLAB не изменяет системные полномочия.

Значение по умолчанию: true для новых файлов, false для существующих файлов

Свойства

Свойства. Источник

Вектор символа, который содержит полностью определенный путь к файлу. Только для чтения.

Свойства. Перезаписываемый

Логическое значение, которое задает, позволить ли сохранять в файл. Возможные значения:

true (1)Позвольте сохранить. Если файл только для чтения, измените системные полномочия с fileattrib.
false (0)Отключите сохранение с matfile. MATLAB не изменяет системные полномочия.

Значение по умолчанию: true для новых файлов, false для существующих файлов

Методы

размерArrayDimensions
ктоИмена переменных в MAT-файле
ктоИмена, размеры и типы переменных в MAT-файле

Вы не можете получить доступ к справке для этих методов с помощью команды help. Найдите справку на методах из командной строки с помощью команды doc, таких как doc matlab.io.MatFile/size.

Примеры

Создайте 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;

Смотрите также

| | |

Была ли эта тема полезной?