Обмен большими наборами данных между Matlab и R

StackOverflow https://stackoverflow.com/questions/4771144

  •  22-10-2019
  •  | 
  •  

Вопрос

Мне нужен относительно эффективный способ обмена данными между Matlab и р.

я проверил Запасной а также Matlab R-Link, но Запасной форматы Двоирные данные Matlab как текстовые строки сначала, а затем печатают их в файл ASCII, который не эффективен для больших наборов данных, и Matlab R-Link Работает только на Windows (он использует интерфейс на основе COM).

Обновлять:

Дирк опубликовал список того, что кажется лучшим решением этой проблемы, чем Запасной а также Matlab R-Link. Анкет Я также недавно узнал о Ram Disks (видеть здесь а также здесь Для некоторых примеров реализации) и подумали, что они могут способствовать дальнейшему облегчению обмена большими наборами данных между MATLAB и R (или аналогичными вычислительными средами). Это приводит меня к следующим вопросам:

Забегая, что данные вписываются в память машин в собственных контейнерах данных Matlab или R:

  1. Какое -либо из решений перечислено до сих пор лучше подходит для дисков RAM?

  2. Есть ли какие-либо дополнительные соображения, которые необходимо учитывать при работе с дисками RAM, а не с разыгрывающими решениями?

Спасибо!

Это было полезно?

Решение

Пара идей, и с предостережением, которые я знаю больше о стороне r вещей:

  • Тте R.matlab Пакет на Cran может помочь: Этот пакет предоставляет методы для чтения и записи файлов ковриков. Это также позволяет общаться (оценивать код, отправлять и получить объекты и т. Д.) С помощью MATLAB V6 или выше, работающего локально или на удаленном хосте.

  • HDF5, как вы предложили, это возможность, но я слышал, что поддержка R в пакете Cran HDF5 несколько просто

  • NetCDF может быть альтернативой; У Cran есть пакеты Rnetcdf, NCDF а также NCDF4

  • Используйте базу данных, особенно на основе света и файлов, например, SQLite или H4, оба из которых имеют R-поддержку

  • Используйте общий формат сериализации / деализации; R поддерживает буферы протокола Google через Rprotobuf И Google указывает на Protobuf-matlab для Matlab

  • Напишите свой собственный! Особенно, если вам нужно только что -то основное, например, большие прямоугольные матрицы, тогда ничто не превзойдет прямую бинарную запись; Я сделал это один раз в течение года назад для Octave (которая близка к Matlab). Вы можете расширить MATAB через MEX -файлы; R имеет свой API и помощники Rcpp. Анкет Чем больше ваши наборы данных, тем привлекательнее это может выглядеть, когда вы сохраняете конверсии.

Другие советы

MATLAB использует HDF5 изначально в последних версиях («Сохранить» и «нагрузка»). Eсть упаковка Для R. тогда HDF5 может быть хорошим решением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top