matfile

Доступ и заменяет переменные в MAT-файле, не загружая файл в память

Описание

Используйте объект MAT-файла получить доступ и заменить переменные в MAT-файле, не загружая файл в память. Можно загрузить или сохранить части переменных. Частичная загрузка и сохранение переменных с помощью объекта MAT-файла требуют меньшей памяти, чем load и save команды.

Создание

Описание

пример

matObj = matfile(filename) создает matlab.io.MatFile объект, соединенный с MAT-файлом, задан filename.

Объект MAT-файла позволяет вам получать доступ и заменять переменные непосредственно в MAT-файле, не имея необходимость загружать переменные в память.

пример

matObj = matfile(filename,'Writable',isWritable) включает или отключает доступ для записи к файлу. Задайте isWritable как true или false.

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

развернуть все

Имя MAT-файла в виде вектора символов или строкового скаляра.

  • filename может включать весь или частичный путь; В противном случае, matfile поиски файла вдоль MATLAB® путь поиска файлов.

  • Если filename не включает расширение, matfile добавляет .mat.

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

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

  • true — Включите доступ для записи к MAT-файлу от объекта MAT-файла. Если файл только для чтения, измените системные полномочия при помощи fileattrib функция.

  • false — Отключите доступ для записи к MAT-файлу от объекта MAT-файла.

Свойства

развернуть все

Доступ к свойствам объектов MAT-файла

Доступ к свойствам объектов MAT-файла с помощью синтаксиса ObjectNameсвойства., где PropertyName имя свойства. Например, можно получить доступ к пути к исходному файлу MAT-файла, соединенного с объектом mObj MAT-файла использование синтаксиса mObj.Properties.Source.

Путь к файлу, возвращенный как вектор символов, содержащий полностью определенный путь к MAT-файлу.

Состояние доступа для записи объекта MAT-файла, возвращенного как любой true или false.

  • true — Объект MAT-файла имеет доступ для записи к MAT-файлу.

  • false — Объект MAT-файла имеет доступ только для чтения к MAT-файлу.

Функции объекта

size

Получите измерения массива переменной в MAT-файле

allDims = size(matObj,variable) возвращает размер каждой размерности заданной переменной в файле, соответствующем matObj. Выход allDims 1- m вектор, где m = ndims(variable).

[dim1,...,dimN] = size(matObj,variable) возвращает размеры каждой размерности в отдельных выходных переменных dim1,...,dimN.

selectedDim = size(matObj,variable,dim) возвращает размер заданного измерения.

Примечание: не вызывайте size с синтаксисом size(matObj.variable). Этот синтаксис загружает целое содержимое переменной в память. Для очень больших переменных эта операция загрузки приводит к Out of Memory ошибки.

who

Получите список переменных в MAT-файле

varlist = who(matObj) списки в алфавитном порядке все переменные в MAT-файле сопоставлены с matObj. Опционально, возвращает список в массиве ячеек varlist.

varlist = who(matObj,variables) перечисляет заданные переменные.

whos

Получите список переменных в MAT-файле с размерами и типами

details = whos(matObj) возвращает информацию обо всех переменных в MAT-файле, сопоставленном с matObj.

details = whos(matObj,VarName1,...,VarNameN) возвращает информацию о заданных переменных.

Примеры

свернуть все

Создайте объект MAT-файла для своего файла. matfile функционируйте создает matlab.io.MatFile объект, который соответствует MAT-файлу.

matObj = matfile('myFile.mat')

Включите доступ для записи к MAT-файлу, myFile.mat, когда вы создаете объект.

m = matfile('myFile.mat','Writable',true);

В качестве альтернативы можно включить доступ для записи после того, как вы создадите объект MAT-файла путем установки Writable свойство.

m.Properties.Writable = true;

Откройте демонстрационный MAT-файл topography.mat. Считайте переменную topo из файла с помощью объекта MAT-fie. MATLAB® загружает целую переменную, topo, в рабочую область.

m = matfile('topography.mat');
topo = m.topo;

Copyright 2012 The MathWorks, Inc.

Создайте MAT-файл, содержащий массив, и затем добавьте другой массив в файл с помощью объекта MAT-файла.

Создайте файл MAT путем генерации 20 20 массив, x, и сохранение его к myFile.mat.

x = magic(20);
save('myFile.mat','x');

Создайте объект MAT-файла, соединенный с существующим MAT-файлом. Включите доступ для записи установкой Writable к true.

m = matfile('myFile.mat','Writable',true);

Сгенерируйте другого 15 15 массив, y. Сохраните y к MAT-файлу с помощью объекта MAT-файла. Задайте переменную в MAT-файле с помощью записи через точку, похожей на доступ к полям массивов структур. MATLAB® добавляет переменную под названием y к файлу.

y = magic(15);
m.y = y;

Отобразите все переменные, сохраненные в MAT-файле, myFile.mat.

whos('-file','myFile.mat')
  Name       Size            Bytes  Class     Attributes

  x         20x20             3200  double              
  y         15x15             1800  double              

Доступ к определенным частям переменной в MAT-файле с помощью объекта MAT-файла. Например, можно сохранить данные к подмножеству переменной в MAT-файле или считать подмножество переменной в рабочую область MATLAB®.

Сохраните данные к подмножеству переменной y в файле myFile2.mat использование объекта MAT-файла. Во-первых, создайте объект m MAT-файла.

m = matfile('myFile2.mat');

Затем создайте и сохраните массив в часть переменной y. Задайте переменную в MAT-файле с помощью записи через точку, похожей на доступ к полям массивов структур. MATLAB® вставляет 20 20 массив в элементы y заданный индексами (81:100,81:100).

m.y(81:100,81:100) = magic(20);

Считайте подмножество массива y в новую переменную рабочей области, z. MATLAB® читает 10 10 подрешетка, заданная индексами (85:94,85:94) из MAT-файла в переменную z рабочей области.

z = m.y(85:94,85:94);

Определите размер переменной, и затем вычислите среднее значение каждого столбца.

Откройте MAT-файл в качестве примера, stocks.mat.

filename = 'stocks.mat';
m = matfile(filename);

Определите размер переменной, stocks, в stocks.mat.

[nrows,ncols] = size(m,'stocks');

Вычислите среднее значение каждого столбца переменной stocks.

avgs = zeros(1,ncols);
for i = 1:ncols
    avgs(i) = mean(m.stocks(:,i));
end

Ограничения

  • При доступе к частям переменных в 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')
Представлено до R2006a