Загрузите поле структуры в переменную (MATLAB)

У меня есть структура, хранящаяся на моем жестком диске. Мне нужно загрузить одно из его полей в локальную переменную. Простая нагрузка получает

% 'PRICES' is the stored struct.  1st fieldname is '.Raw'.  
% Only '.Raw' needs to be loaded

var = load( fullfile(path, 'PRICES.Mat') ) % Wrong as var becomes a struct containing a struct.
% DESIRED value: var = PRICES.Raw ;

Можно ли это сделать за 1 шаг? Я, конечно, могу перезаписать var и выполнить это, но есть ли прямой способ сделать это? Спасибо.


person Maddy    schedule 31.08.2011    source источник
comment
Что вы подразумеваете под полем MAT-файла? Вы имеете в виду переменную или поле переменной?   -  person Nzbuu    schedule 31.08.2011
comment
PRICES была структурой до сохранения с первым именем поля как «Raw». После команды save он был сохранен как PRICES.Mat. Мне нужно получить матрицу PRICES.Raw и передать ее в переменную.   -  person Maddy    schedule 31.08.2011


Ответы (2)


Вы не можете загрузить часть переменной из MAT-файла. Вы хотите либо:

var = load( fullfile(path, 'PRICES.Mat'), 'PRICES' );
var = var.PRICES.Raw;

or

load( fullfile(path, 'PRICES.Mat'), 'PRICES');
var = PRICES.Raw;

См. справку по MATLAB: http://www.mathworks.co.uk/help/techdoc/ref/load.html

person Nzbuu    schedule 31.08.2011

Если вы используете MATLAB 7 или выше, вы можете сохранить свою структуру, используя флаг -struct:

save(fullfile(path, 'PRICES.Mat'),'-struct','PRICES');

Если вы сохраните свою структуру таким образом, вы можете загрузить определенное поле структуры, не загружая все поля структуры:

load(fullfile(path, 'PRICES.Mat'),'Raw');
disp(Raw);
person Mansoor Siddiqui    schedule 31.08.2011
comment
Но тогда файл *mat содержит кучу переменных, а не структуру, верно? - person KAE; 05.05.2016
comment
Хорошо, есть ли простой способ восстановить исходную структуру из разложенных переменных, если нужна одна целая структура? В противном случае нам просто нужно заранее решить, что мы действительно хотим загрузить. - person Khoa; 11.08.2016
comment
Кроме того, аргумент -STRUCT должен быть скалярной структурной переменной. Итак, если у нас есть массив структур, это не удастся. - person Khoa; 11.08.2016