-3

我想使用用 c 编写的某个函数与 matlab 和 mex 系统一起使用。关于如何将其移植到 R 的任何想法/经验?

由于评论说这是模糊的,一些细节。我需要与 R 一起使用某个编写良好的 matlab 函数(我的所有其余代码都在 R 中)。这个函数有一个空的 m 文件,只有文档。所有工作都在相应的 .c 文件中,但这是专门为与 matlab 一起使用而编写的 c 代码,因此包含对 mx 函数的大量调用,据我所知,这是对 matlab 内部生活的挂钩。

通过数据文件进行通信的建议不起作用,我需要在迭代算法中使用此功能。

4

1 回答 1

1

这个 pdf 文件可能会给你一些提示。我没有任何将 C 与 R 结合使用的经验,但这似乎是可能的。

文件中未提及的一种我有时喜欢使用的方法是简单地使用您的 MATLAB/R 程序写出一个数字文本文件以输入到您的 C 程序中(例如c_data.dat),然后使用系统命令在喷出一些输出数字(例如c_output.dat)之前调用一个处理数据文件的独立 C 程序。然后让您的 MATLAB/R 程序从文件中读取数据。

在 MATLAB 中,这可能如下所示:

%# custom function to write to file
function_write_data( my_data_matrix, 'c_data.dat'); 

%# call the c program
system('./c_program c_data.dat c_output.dat');

%# read the results
my_results_matrix = function_read_data('c_output.dat');

(我对 R 语法没有信心——你必须自己解决这个问题!)

在您的场景中这样做的好处是您可以为 R 和 MATLAB 使用完全相同的 C 程序。但是,您必须编写读/写函数,并且在某些情况下,读/写开销可能会令人望而却步(即不会显着提高速度)..

于 2012-10-05T22:45:18.907 回答