您的位置:首页 > 编程语言 > MATLAB

Matlab JDBC 连接数据库

2012-08-04 19:04 288 查看
  由于工作需求,需要通过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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: