【发布时间】:2011-07-28 11:34:07
【问题描述】:
【问题讨论】:
-
对于简单的程序,你可以试试这个新包:cran.r-project.org/package=matconv
【问题讨论】:
不,没有简单的转换。有些翻译几乎完全准确,有些翻译只能带着巨大的痛苦和痛苦。至少你会使用 R!从这里开始计算类似的函数和语法:
http://cran.r-project.org/doc/contrib/R-and-octave.txt
http://cran.r-project.org/doc/contrib/Hiebeler-matlabR.pdf
当您遇到困难时,请在此处提出具体问题。就目前而言,这确实太模糊了,尽管这些参考卡将有助于入门。
【讨论】:
翻译代码的另一种方法是从 R 中调用 MATLAB,使用 RMatlab 包。
我没有尝试过RMatlab,但是包描述说:
这个包提供了读取方法 并写入 MAT 文件。它也使它 可以沟通(评估 代码,发送和检索对象等) 使用 Matlab v6 或更高版本运行 在本地或远程主机上。
【讨论】:
R.Matlab 包会读取Matlab .mat 文件,这些文件基本上是数据文件,但它不会帮助您从.m 文件中翻译代码。
Paul Gilbert 在R mailing list 上提供了一个粗略的Bash 脚本,可以帮助您开始(他声称它将转换大约80%):
#!/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
【讨论】:
请参阅有关此问题的 cmets: 网址:https://mandymejia.wordpress.com/2014/08/18/three-ways-to-use-matlab-from-r/
她提到了几个选择:
选项 1:使用 system() 一次运行一个 MATLAB 命令
选项 2:使用 R.matlab 将代码发送到 MATLAB 服务器
选项 3:使用 writeLines() 编写整个 MATLAB 程序并使用 system() 运行
【讨论】: