使用matlabcontrol调用matlab获取结果

具体步骤如下:

1、在项目中添加matlabcontrol jar包;

2、在项目中新建文件夹,把需要用到的matlab代码都放到这个文件夹里;

3、获取matlab代理;

public class JavaUseMatlab {
    public static void main(String[] args) throws MatlabConnectionException, MatlabInvocationException {
        //MatlabProxyFactoryOptions设置matlab
        MatlabProxyFactoryOptions.Builder builder = new MatlabProxyFactoryOptions.Builder();
        //设置matlab GUI隐藏,Windows操作系统中 MATLAB command window还是会显示(如果想让MATLAB command window也隐藏,需要用到JNA),Linux会全部隐藏
        builder.setHidden(true);
        //设置使用已存在的matlab,设置这个不会运行一次matlab启动一次
        builder.setUsePreviouslyControlledSession(true);
        File file = new File("E:\\Java\\JavaFX\\MatlabCode");
        //设置matlab启动时路径
        builder.setMatlabStartingDirectory(file);
        //设置获取代理的时间,这里的300000有的时候不够,改长一点就可以
        builder.setProxyTimeout(300000);
        MatlabProxyFactory factory = new MatlabProxyFactory(builder.build());
        //获取matlab代理(用的是代理模式)
        MatlabProxy proxy = factory.getProxy();
        //这个有好几种方法
        proxy.returningFeval("ADD", 0,1,2);//调用sumOne.m函数,传入input参数
        //断开连接
        proxy.disconnect();
    }
}

4、proxy调用matlab的时候有好几种方法:

https://blog.csdn.net/qq_38497266/article/details/93880521

可以去上面这个网站看代理的几个方法。

或者可以去看matlabcontrol的Javadoc:

需要注意的地方:

https://ww2.mathworks.cn/help/matlab/matlab_external/handling-data-returned-from-java-methods.html

查看上面的网址看从java传入的参数,matlab是否识别,不识别需要改

例如,如果传入的参数为String类型,需要在matlab中包装一下

a = java.lang.String(传的参数);

m文件里的参数 = char(a);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值