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 имеет несколько преимуществ:
- Явно присваивая имена переменным, которые создаются в рабочей области, документ о том, что функция делает гораздо более четко.
- Устранение необходимости в операции присваивания из структуры позволяет удалить отвлекающие и нерелевантные операции из исходного файла.
Я использую MATLAB R2010a.