Подтвердить что ты не робот

Преобразование кода MATLAB в R

Есть ли инструмент для преобразования MATLAB кода в R?

У меня есть много кода, который нужно преобразовать из MATLAB в R. Он не обязательно должен быть точным, но он будет полезен при старте.

4b9b3361

Ответ 1

Пол Гилберт предлагает грубый Bash script, который может помочь вам начать (он утверждает, что он преобразует около 80% пути ) в списке R:

#!/bin/csh
cp $1 $2
ex -s $2 <<eof
   g/%/s//#/g
   g/function\(..*\)=\(..*\)(\(..*\)/s//\2 <-function( \3 { \1/
   g/end/s//   } #/
   g/for\(..*\)=\(..*\):\(..*\)/s//for ( \1 in \2 : \3 ) {/
   g/_/s//./g
   g/;/s///g
   g/==/s//@@/g
   g/=/s//<-/g
   g/@@/s//==/g
   g/zeros(/s//matrix(0,/g
   g/ones(/s//matrix(1,/g
   g/eye(/s//diag(1,/g
   g/\/s//solve(,)/g
   g/fsolve('\(..*\)'/s//ms(~\1 /g
   g/param(\(..*\))/s//param[ \1 ] /g
   g/var(\(..*\))/s//var[ \1 ] /g
   g/mod1(\(..*\)/s//mod1[ \1 /g
   wq
eof

Ответ 2

Нет никакого простого преобразования. Некоторые будут переводить почти точно, некоторые будут переводить только с большой болью и страданиями. По крайней мере, вы будете использовать R! Начните здесь, чтобы выработать аналогичные функции и синтаксис:

http://cran.r-project.org/doc/contrib/R-and-octave.txt

http://cran.r-project.org/doc/contrib/Hiebeler-matlabR.pdf

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

Ответ 3

Альтернативой переводу кода было бы вызвать MATLAB из R, используя пакет RMatlab.

Я не пробовал RMatlab, но в описании пакета указано:

Этот пакет предоставляет методы для чтения и писать файлы MAT. Это также делает возможно общаться (оценить код, отправлять и извлекать объекты и т.д.) с Matlab v6 или выше работает локально или на удаленном хосте.

Ответ 4

Пожалуйста, ознакомьтесь с комментариями по этому вопросу: URL: https://mandymejia.wordpress.com/2014/08/18/three-ways-to-use-matlab-from-r/

Она упоминает несколько вариантов:

Вариант 1: Запустите одну команду MATLAB за раз, используя system()

Вариант 2: используйте R.matlab для отправки кода на сервер MATLAB

Вариант 3. Запишите всю программу MATLAB с помощью writeLines() и запустите с помощью system()