如前如述,SHOGUN为多种语言提供接口。而Eierlegendewollmilchsau (elwms)接口可以一个文件里 做所有事情。它是所有静态接口 静态接口 的混合体,因此那些例子和文档同样适合 这个接口。
这种接口的最主要功能就是它提供了命令互用性,可以同时运行外部语言的代码。
elwms('run_python', 'A', A, ..., pythoncode, '...') elwms('run_r', 'A', A, ..., 'rfile', '...') elwms('run_octave', 'A', A, ..., octavecode, '...')
例如
% uses matplotlib to plot a figure from within octave A=[[1,2,3];[4,5,6]]; B=[[1,1,1];[0,0,0]]; pythoncode=sprintf("\ \ import numpy\n\ x=numpy.array([[1.0,2,3],[4,5,6]])\n\ results=(A, B, [ 'bla1', 'bla2' ], x)\n\ \ from pylab import *\n\ plot(B)\n\ show()\n\ \ ") [A2,B2,bla,x]=elwms('run_python', 'A',A, 'B',B, 'pythoncode', pythoncode) sprintf('%s\n', char(bla{1})) sprintf('%s\n', char(bla{2}))
这个例子允许我们在octave中调用matplotlib来画图!当在不同语言之间转换变量时,shogun支持所有的数据 类型。在这种情况下两个浮点数矩阵A和B被传给python,之后它们又原样传回来,还有一个 字符串的列表和一个变量x。注意,这里使用elwms 而不是 sg 作为函数名。 要了解更多信息,请查看examples/elwms的关于elwms的例子。