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

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

0 голосов
/ 07 сентября 2010

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

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

или

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

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

Thx Thomas

Ответы [ 3 ]

6 голосов
/ 07 сентября 2010

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

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

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

0 голосов
/ 13 сентября 2010

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

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

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

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

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

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

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

0 голосов
/ 07 сентября 2010

Что ж, если вы просто выполните load('filename.mat');, все переменные окажутся в текущей области видимости.

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

...