Как я могу проверить содержимое MAT файла в MATLAB без его загрузки?

У меня есть большая структура в MAT файле. Я хочу проверить, присутствует ли конкретное поле в структуре без загрузки MAT файла, поскольку содержимое очень велико, и я хочу свести к минимуму использование памяти.

Возможно ли это, или я должен сначала загрузить его, как в следующем примере?:

load('test.mat');             %# Load the MAT-file
tf = isfield(s,'fieldname');  %# Check if structure s has field 'fieldname'

Ответы

Ответ 1

Чтобы проверить содержимое файла MAT без его загрузки, используйте:

vars = whos('-file','test.mat')
ismember('fieldname', {vars.name})

Ответ 2

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

Однако, если вы сохраните файл .mat с '-struct' -option, он разбивает поля на отдельные переменные в. мат. Вы можете воссоздать структуру, вызвав

myStructure = load('test.mat');

Сохранение этого способа также позволяет проверить, существует ли поле (переменная) с помощью подхода @Amro (который намного чище, чем я предложил раньше).