Matlab: загрузка файлов

Если я использую функцию загрузки по Matlab, я обычно получаю что-то вроде этого:

temp = load('filename.mat');
realData = temp.VarName;
clear temp

или же

realData = load('filename.mat');
realData = realData.VarName;

любой из этих методов превосходит другие, особенно с точки зрения использования памяти? Или есть более прямой подход, чтобы избежать этой временной структуры?

Томас Томас

3 ответа

Решение

Ну, если вы просто делаете load('filename.mat');все переменные попадают в текущую область.

Я сомневаюсь, что есть какие-то значимые затраты памяти на любой из ваших методов. Matlab использует копирование при записи.

Если вы знаете, что вам нужны только определенные переменные из вашего matfile, вы можете сделать

realData = load('filename.mat', 'VarName');

См. Документацию Matlab для получения дополнительной информации о команде загрузки.

Вы можете попробовать использовать команду "importdata":

   szFilePath = 'c:\dirName\myData.mat';
   myData = importdata( szFilePath );

Это позволяет избежать неявного размещения переменных в области видимости, когда загрузка используется без выходных аргументов, а также ненужной команды assignment-from-struct.

Как отметил Оли, ленивое копирование (копирование при записи) означает, что соображения памяти спорны.

С точки зрения обслуживания / читабельности importdata имеет несколько преимуществ:

  1. Явно присваивая имена переменным, которые создаются в рабочей области, документ о том, что функция делает гораздо более четко.
  2. Устранение необходимости в операции присваивания из структуры позволяет удалить отвлекающие и нерелевантные операции из исходного файла.

Я использую MATLAB R2010a.

Другие вопросы по тегам