由于工作需求,需要通过matlab实现神经网络预测,然后把预测结果展示出来,本想通过封装.M为.NET类库来调用,结果遇到了问题,就是在进行sim预测时候,会报告trainlm不是有效的输入,做了一周的尝试也未成功,下面是关键代码:
function [S, P, WSK, WGK] = Simulate(matfile,capacity,matrix)
load(matfile);
WSK=wsk;
WGK=wgk;
A=2*(matrix+1)/capacity-1;
A=A';
B=sim(net,A);
B=B';
B=(B+1)*(capacity/2)-1;
S=B(:,1)';
P=B(:,2)';
clear A;
clear B;
end
离线训练并保存训练模型,然后在加载这个.mat文件,从而进行在线预测,但是封装为.NET类库后调用Simulate方法时,在sim(net,A)处会出错。
由于问题未能解决,不得不转向通过matlab完成自动定时执行。
matlab连接数据库,首要问题就是服务器都是64bit系统,该系统下Matlab(64bit)不支持ODBC方式,因此不得不使用JDBC方式。
配置过程如下:(本人使用默认安装路径C:\Program Files\MATLAB\R2012a)
1.下载JDBC驱动,目前最新版本,支持SQL Server 2012。
2.解压缩后将sqljdbc4.jar复制到C:\Program Files\MATLAB\R2012a\jdbc\sqljdbc4.jar,其中jdbc目录是自己创建的。
3.修改C:\Program Files\MATLAB\R2012a\toolbox\local\classpath.txt文件,在末尾追加如下代码
# SQL Server JDBC Driver 4.0
$matlabroot/jdbc/sqljdbc4.jar
4.重启matlab,如果未发现异常提示,则配置成功。
数据库连接
function [conn]=SqlConnection(host,userName,password,initialCatalog) if isempty(host) host='127.0.0.1'; end if isempty(userName) userName='sa'; end if isempty(password) password='sa#pwd'; end conn=database(initialCatalog, userName, password,'com.microsoft.sqlserver.jdbc.SQLServerDriver', ['jdbc:sqlserver://',host ,':1433;databaseName=',initialCatalog]); end
本人未能成功解决封装Matlab神经网络,虽然“高人”指点离线训练+在线训练,但是未果。
若有人能解决该问题,通过C++能解决也可,请联系QQ:350816086。
【理论指导实践,实践完善理论;站在巨人的肩上就是先学习理论再来实践!】
浙公网安备 33010602011771号