преобразование файлов .mat в XML - нужно добавить класс Java? - PullRequest
1 голос
/ 24 января 2011

Я хотел бы преобразовать некоторые файлы MAT в XML (каждый файл .mat содержит иерархическую структуру), чтобы я мог получить доступ к данным из другого программного обеспечения (например, R, Python). Эти файлы MAT были сгенерированы в Matlab 6.5, поэтому они не входят в спецификацию формата данных HDF5. Существует пользовательский набор инструментов XML (с 2003 года), который предлагает простое преобразование из MAT в XML:

http://www.mathworks.com/matlabcentral/fileexchange/4278

но, похоже, я сталкиваюсь с ошибкой при использовании функции xml_format:

??? NaN's cannot be converted to logicals.

Структура данных, которую я пытаюсь преобразовать, вложена на многих уровнях со многими типами данных (массивами и т. Д.), Поэтому мне, возможно, придется написать свою собственную функцию экспорта. Я использую Matlab Version 7.10.0.499 (R2010a) 64-bit (maci64), поэтому у меня должны быть доступны функции xmlwrite и xmlread:

http://www.mathworks.com/help/techdoc/import_export/f5-86078.html#bsmnj5u

Однако, когда я пытаюсь последовать их примеру,

docNode = com.mathworks.xml.XMLUtils.createDocument('root_element')

Я получаю ошибку:

??? Undefined variable "com" or class

Если я пытаюсь увидеть, какие классы Java загружены, я получаю

[M,X,J] = inmem;
J = 

    'MException'

хотя в моем $matlabroot/toolbox/local/classpath.txt загружено много классов Java.

Нужно ли устанавливать модули Java или добавлять дополнительные пути, или что-то еще, чтобы это заработало? Или у вас есть предложения перейти от MAT к другому общему формату обмена данными, который допускает произвольное вложение структур (некоторые из которых содержат массив изображений)? Я не видел много способов преобразования MAT в HDF5, которые, похоже, могли бы стать разумной альтернативой переходу от MAT к XML ... Спасибо ~

1 Ответ

2 голосов
/ 24 января 2011

Поскольку новые файлы mat - это просто файлы HDF5 с перевернутыми строками / столбцами, вы можете просто написать новые matlabs, чтобы перевести их в HDF5.

Чтобы преобразовать старые файлы mat в новый формат HDF5, просто откройте их в matlabи восстановить

s=open('AFile.mat')
save('AFile.mat','-struct','s')

или около того

Вы также можете изучить функцию hdf5write

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...