Matlab学习小记

来源:互联网 发布:域名注销 编辑:程序博客网 时间:2024/05/21 07:15

      寒假导师要我弄个地铁施工过程中的断面沉降拟合图。其实蛮简单的,看过一些论文,大概的意思是说沉降是服从正态分布。大部分文章所写的公式和Matlab里面的高斯公式相同,再加上一个断面有两个方向的开挖,所以,拟合曲线就应该是两个高斯公式叠加(至少我是这么认为的,也没问导师。于是,我决定在Matlab的环境下来编写这个程序,以前也很少接触,正好寒假没事做也可以充实一下。

      首先在cftool上用一些样例数据进行拟合,选择Gauss2,感觉拟合的精度挺高,总方差10左右,精度0.99。找了下网上怎么把cftool的操作表达成代码,还可为后续写程序做好准备。

      f = fittype('Gauss2');
      cfun = fit(x,y,f);
      tx = [-15:0.1:15];
      ty= cfun.a1*exp(-((tx-cfun.b1)/cfun.c1).^2)+cfun.a2*exp(-((tx-cfun.b2)/cfun.c2).^2);
      pl = plot(tx,ty);

      这样写了function,大概就是这么个意思。我开始想把这个函数导出来,然后看是否能IIS的网页中直接调用,就可以直接整合到现在那个地铁的沉降数据的那个网站去。可能是我的机子是64位的,按照帮助的信息做了以后,始终无法读出来MWArray.dll这个库。但是我如果用VS写Application却可以读出来。大概可能是因为IIS不是64位的缘故。既然这条路走不通,我干脆就直接全部在Matlab的GUI里面完成。想法是好的,但是实现起来总是有很多问题。首先就是通过ODBC的conn=database('sample','***','***')这条语句始终通不过,有设置数据源,用户名密码是对的。后来我才知道可以用conn.Message来查看是什么问题,总是提示字符串长度和缓冲区问题。后来干脆用JDBC来解决问题。但是按照帮助的信息始终不能找到SQLServer驱动,通过网上介绍怎么用Matlab连接Oracle才知道是驱动没装。要装一个SQL JDBC Driver的驱动,复制到matlab的相应目录,然后更改matlab的toolbox下面的一个classpath文件才能识别。最后将图美化一下,就完成了。

 遇到的问题

1. MATLAB中的Database [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度

解决:通过JDBC解决,我感觉还是64位软件的原因,因为我试过在虚拟机Win2003中调用这个方法,没有任何问题。

2. Matlab字符串连接

解决:这个很简单,但是容易忘['aaa' 'bbb'],也可以strcat()函数,如果是字符串数组就是['aaa';'bbb']中间是分号。

3. Matlab通过JDBC连接到SQL Server

解决:首先下载Microsoft SQL Server JDBC Driver ,然后将sqljdbc.jar复制到matlab目录下的/java/jar/toolbox然后在/matlab/toolbox/local目录,编辑classpath.txt文件,在最后一行添加$matlabroot/java/jar/toolbox/sqljdbc.jar

最后就是安装SQL Server JDBC Driver中自带的help中操作就可以了。

      上面几个问题确实困扰了我很久,其他的也还好,问题不是很大。希望以后碰到类似问题的可以少走些弯路吧,初学matlab,还有很多不清楚,如有错误,欢迎指教。