eclipse ,Struts2开发。
提醒:如果你只需要运行m文件就可以实现功能的话就选用打包成jar包,因为下述方法需要启动matlab在matlab环境下运行
请直接转移到我的上一篇博客,或者搜索关键词 ‘matlab java jar包 javabuild deplytool’
由于 把fMRI的预处理连接在web上==把SPM或DPABI和SPM连接到web上,但是用上一篇博客里面的打包jar包的方法,只能打包m函数文件,而SPM除了m文件还有编译后的p文件,甚至还有c文件(我觉得可以总结为这个预处理阶段必须要在matlab环境下运行),而且打包的话不能保留文件的结构信息,所以我选用了matlabcontrol包来进行处理,但是这个方法是需要打开matlab。
这面是使用matlabcontrol包来完成java调用matlab 的相关博客
matlabcontrol包的下载问题,详见参考博客2,我在博主给的网址上免费下的,网址打开一会儿才会显示,如果实在打不开的话,可以在评论里告诉我,我上传到云盘上分享出来。
首先请在网站中配置matlabcontrol包(放在lib文件夹下,然后在eclipse里,要add 到build path)
然后我是把m代码都放在项目的根目录那里(不需要把SPM或者DPABI的代码复制到网站中,因为之后直接在matlab中运行了)
(使用的是strust2框架,嗯,网站的结构如下)
然后使用java代码来调用这些代码(首先说明我的trigger是专门用来调用别的函数的,所以我只用调用trigger文件就可以完成我的功能)
test1:
import matlabcontrol.*;
public class test_connetction {
public static void main(String args[]) throws Exception {
try {
MatlabProxyFactory factory = new MatlabProxyFactory();
MatlabProxy proxy = factory.getProxy();
Object[] result = proxy.returningFeval("trigger",1,"D:/A1021","D:/matlab_func");
} catch (Exception e) {
// TODO: handle exception
System.out.println("exception");
}
}
}
请仿照上述方法修改代码,具体的含义在参考博客里面有所涉及。
目测只需要修改得到result 的那一行
"trigger"---调用的函数名
1----返回的参数个数
然后后面都是这个函数所需要的参数
亲测有效。
忽略红字,最后的一行表示他已经开始跑了,但是呢,我虽然在运行之前已经打开了一个matlab,然而他还是固执得自己又打开了一个matlab,emmm,这就是其中一个参考文件中提到的问题。
直接使用参考文献1中对应的代码,修改部分内容,还有注意,监听器要在eclipse新建一个监听器,不能直接在一个类里面写哦。
实现的效果是,我运行网页时,matlab就会自动打开了,然后后续matlab就默默运行啦~
非常感谢乐于分享的博主们!! 毕业论文致谢预定