0

我有一个编译的 .JAR 文件,它获取两个数据集作为输入并产生一些分数(实数)。输出打印在控制台(cmd 提示符环境)中。但是我想在我的 matlab 代码中多次调用该函数。我无权访问 JAR 文件的源代码。是否有任何有效的方法(可能不是使用文件)将 jar 文件的结果返回给 matlab。

示例 JAR 输出:


一个:82.212 %

b: 0 %

c: 0.003 %


d: 13.471 %

e: 4.809 %


我想要这5个数字。它们始终以相同的格式打印。

有什么方法可以将这些结果重定向到例如 matlab 可以读取结果的 TCP/IP 端口?

谢谢

4

2 回答 2

2

result使用函数的第二个输出system()。它将包含您需要解析的所需输出字符串。

[status, result] = system('command');

现在,假设您有result字符串,这里如何将其解析为值向量:

names = {'a', 'b', 'c', 'd', 'e'}';
values = nan(size(names));
for k = 1 : length(names)
    idx = strfind(result, names{k});
    assert(numel(idx) == 1);
    values(k) = sscanf(result(idx + length(names{k}) + 1 : end), '%f');
end
于 2012-09-30T20:01:05.340 回答
2

另一个要考虑的选择是将 JAR 链接到您的 Matlab 程序,方法是将其放在 javaclasspath 中。然后,您可以直接从您的 M 代码调用 JAR 中定义的任何公共对象的方法。如果有一个合适的入口点来计算这些值,您可以直接调用计算方法而不是通过 JAR 的main,并避免壳到一个单独的 JVM 进程和解析输出的开销。如果你最终调用它很多,它会更有效率。

于 2012-10-02T05:00:01.480 回答