java调用matlab中神经网络工具箱编程
更新时间:2024-01-20 03:07:01 阅读量: 教育文库 文档下载
java调用matlab中神经网络工具箱编程
一、安装matlab、java,配置好java环境
应为matlab生成jar时直接调用的命令行,所以配置好java的标准就是在cmd里java和javac命令都可以用了~
matlab据说低版本的也不能导出,所以就选个新点儿吧,我的是2010a 二、在matlab中编写function文件
三、运行matlab中的deployment tool,新建一个项目,选择target一定是java的哦~ 四、添加类,编辑类名 五、添加刚刚的function文件 六、编译~
至此算是完成了,编译完之后再distrib文件夹下会有一个以你项目命名的jar文件,将这个文件和javabuilder.jar()添加到java程序的运行环境中就可以了,调用方法:
// 训练好的net文件,从matlab中导出的String matStr = \matPath = new MWCharArray(matStr);// 要进行test的数据double[][] xn_test = { { 71.60 }, { 0.00 }, { 107.41 }, { 110.99 }, { 0.00 } };MWNumericArray test = new MWNumericArray(xn_test, MWClassID.DOUBLE);// 声明打包的类,调用测试方法Net_RBF netRBF = new Net_RBF();Object[] result = netRBF.rbfTest(1, matPath, test);//这个1是指输出结果的数目,具体看distrib下的doc// 输出结果System.out.println(\计算结果是:\推荐一篇文章:这个写的详细些,就是看不太清,呵呵 http://www.docin.com/p-55963408.html
遇到的错误:
一、Attempt to use an MWArray that has been disposed
用错对象了,本来是要用new MWCharArray(str);,结果用成了new MWNumericArray(str, MWClassID.CHAR) 二、undefined function or method 'newrb' for input arguments of type 'double” 先说一堆解释:
在C++中调用生成的dll,出现“undefined function or method 'newrb' for input arguments of type 'double”的错误信息。返回去查看m代码编译时产生的日志文件mccExcludedFiles.log,发现其中有这么一句:
D:\\Program Files\\MATLAB\\R2008b\\toolbox\\nnet\\nnet\\nnnetwork\\newrb.m called by F:\\HybridProgramming\\MLA\\depth_mapping.m (because of toolbox compilability rules)
看起来像是matlab compile不支持对newrb命令的编译。
为了证实这一点,我查找了MATLAB的官方论坛,管理员对一个遇到同样问题的人回答如下: You will not be able to compile any function which trains the network (like ADAPT). Though the link does not explicitly list these funcions (like ADAPT), they fall under the 'All other command line functionality'.
However, you can deploy a M function code which uses a pre-trained network. I believe the SIM function will deploy fine. The workflow I see is:
1. In MATLAB, train you network using test input/output 2. Save the network (mat file?)
3. Create a deployable function which then uses the pretrained network for new data. The network itself would not change/adapt/train in this function 4. Compile and deploy the above function
总之其主要意思就是说,MATLAB compile不支持对神经网络工具箱中涉及到训练的函数命令进行编译(像我所使用的newrb命令正是如此),只能编译那些用在已训练好的网络上的函数命令(例如SIM) 这样看来,难道我只能使用MATLAB引擎法来调用神经网络的相关命令,都已经进行到现在,实在不甘心。抱着试一试的心态,我在MATLAB中使用deploytool命令新建一个C++ Shared Library的编译工程,并从MATLAB目录里将newrb.m文件拷贝了一份到当前的编译工程目录下,除了将我们希望调用的
depth_mapping.m添加进编译工程的Exported functions目录,拷贝过来的newrb.m也被添加到Other files的目录,然后开始编译。(此部分测试失败,暂时用的方法就是前面说的)
所以解决方法就是在matlab下训练好网络,将net保存为mat文件,然后再写一个m文件,load进mat文件,sim~ok~ 代码:
A=load(‘bpnet.mat’);B = fieldnames(A);net=A.(B{1});xn_test = [71.60 0.00 107.41
110.99 0.00 ]';net=network(net);Y=sim(net,xn_test); 三、load加载时network类型自动转换struct
这个不是我碰到的,但也是提前看到别人的问题才避免的,解决办法就是上面的代码中,在sim前加上net=network(net);这句话~
正在阅读:
东师15春《行政法(高起本)》在线作业1试卷 - 最新10-25
偏振光实验报告04-06
逆境造就人才作文600字07-16
幸福的陪伴作文600字03-12
观察月亮作文350字06-27
同桌的你的小学生一年级作文250字06-14
生僻字表11-18
第二课堂工作计划11112-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 神经网络
- 工具箱
- 调用
- 编程
- matlab
- java
- 吧台当班操作程序及规定
- 网络应用笔试题及答案(2)
- 网球题库
- 经典小程序
- 2013 机电理论 春季高考(含答案) - 图文
- 龙泉驿断层破碎带隧道处理技术浅析
- 移动通信课后答案
- 信息技术与初中数学教学整合的思考
- 淮安市2010年中考物理、化学、生物学科 实验技能考查实施细则
- 2018届高三语文复习字音字形训练6含解析
- 2017中学教师粉笔字培训心得体会
- 当前纪检监察干部能力建设存在的问题成因及对策
- 数据模型与决策期末复习习题集
- 江西省国家编制考试教育综合基础知识重点全面 - 学习笔记
- C50等级混凝土配合比设计
- 给市长的一封信 - 创建珠海文明城市
- 《审计原理》期末复习资料121207
- 2018镇XX镇第一届葡萄采摘节活动策划方案(申报稿)
- 山西普通高等学校高等职业教育专科专业设置申请表 - 图文
- 安徽三联学院英语系(1)