Доступ к файлу .mat в MATLAB (без использования функции загрузки) - PullRequest
0 голосов
/ 04 марта 2012

У меня есть структура (из матриц) в Matlab, которая была сохранена на жестком диске. В настоящее время я использую load для загрузки этих файлов внутри своих функций. Есть ли у вас какие-либо предложения сделать это другим способом, который будет намного быстрее?

(Да, я могу передать структуру как переменную моей функции, но это невозможно из-за проблем с памятью!). Спасибо! Это было бы отличной помощью!

A = struct('local', randn(200000,14), 'usd', randn(200000,14), ...
          'ttm', randn(180000,14), 'avg', randn(190000,14), ...
          'ttm1yr', randn(190000,14), 'avg1yr', randn(190000,14)) ;
save('A.mat', 'A') ;                     clear all;clc

tic, load A.mat, A=A.local; toc  %--> Takes 1.05 seconds

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Начиная с R2011a, вы можете получить доступ к содержимому файла Mat без использования загрузки через объект matfile. help matfile для деталей.

Реальным преимуществом является то, что это позволяет читать / записывать части больших массивов без загрузки или сохранения всего массива.

Это имеет ограниченное применение для вашей текущей структуры, поскольку поля структур не могут быть проиндексированы таким образом. Но относительно небольшой коэффициент позволит вам воспользоваться этими функциями в зависимости от того, как выглядит остальная часть вашего приложения.

1 голос
/ 04 марта 2012

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

S = load(filename, variables)

форма load. Это значительно ускорит загрузку, поскольку вы не будете копировать все ненужные данные с диска в память, а просто освободите их сразу.

Если ваши данные уже в структурной форме, вы можете использовать эту форму save (из онлайн-документации):

save (filename, '-struct', structName, fieldNames) сохраняет поля указанная скалярная структура в виде отдельных переменных в файле. Если вы включаете необязательные fieldNames, функция сохранения хранит только указанные поля структуры. Вы не можете указать переменные и ключевое слово '-struct' в том же вызове для сохранения.

...