3

我是 MATLAB 和 Perl 的活跃用户,我使用 MATLAB 作为平台来运行主要程序,以及调用 Perl 和 Java 类等其他脚本。

但是,我从来没有找到一种在 Matlab 中重用 Perl 输出的好方法,而不使用 CSV/Excel/txt 文件作为 IO 中值。

我非常感谢任何促进 Perl 和 Matlab 之间交流的想法。或者,您能否推荐其他便于使用 Matlab 的类似语言?

提前非常感谢!

乔。

4

4 回答 4

3

从 Matlab 帮助我学会了使用eval().

所以假设你的 perl 脚本multiply.plx执行

$a=$ARGV[0];

$b=$ARGV[1];

$result=$a*$b;

print "$result";  

在 Matlab 中只需调用

a=perl('multiply.plx','2','3');
b=eval(a);

变量a将是一个字符串,而变量b是一个数字。但是,这仅适用于标量,我无法将数字列表/散列转换为矩阵/向量。

于 2012-11-09T13:53:00.177 回答
1

您是否尝试过使用内置函数PERL。它运行提供的 Perl 脚本并返回结果:

[result,status] = perl('hello.pl','World')

在哪里

你好.pl

$input = $ARGV[0]; 
print "Hello $input.";
于 2012-06-29T08:47:05.380 回答
0

我可能会建议从 Perl 调用 Matlab,而不是从 Matlab 调用 Perl。为此,我推荐Inline::Octave。希望您的 Matlab 代码无需大修即可在 Octave 中运行。

我有一个使用 Perl 和 Octave 一起构建中型科学程序的成功故事。Perl 非常适合收集数据、为 Octave 脚本和批处理准备输入。Octave 代码只能专注于计算任务的核心。PDL是另一种选择,但我切换回 Octave,因为重写原始代码太难了。

于 2013-10-08T19:10:43.090 回答
0

你试过java作为中介吗?就像是

x      = java.lang.Runtime.getRuntime();
process= x.exec('/bin/perl params');
reader = java.io.BufferedReader(java.io.InputStreamReader(process.getInputStream()));
...
reader.readLine()

您可以对输出流执行相同的操作以将数据发送到 perl?似乎相对简单,但可能不是最经济的解决方案。

于 2012-06-29T08:16:31.083 回答