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,还有很多不清楚,如有错误,欢迎指教。
- Matlab学习小记
- MATLAB学习小记
- MATLAB学习小记
- Matlab小记
- Matlab小记
- matlab小记
- Matlab norm 用法小记
- Matlab画图指令小记
- Matlab 使用小记
- matlab 曲线拟合小记
- Matlab基础知识小记
- matlab插值小记
- 学习小记
- 学习小记
- 学习小记
- 学习小记
- Matlab中读取XML小记
- MATLAB小记- polybool与polyarea
- 静态缓存和动态缓存的比较
- 数据库缓存类
- C字符串处理函数的实现(Linux)
- 一个form多个action
- UTF-8与GB2312之间的互换
- Matlab学习小记
- C编程实现http协议
- 使用C#控制远程计算机的服务
- PlayStation显存字库扩容
- Winsock完成端口介绍
- Winsock完成端口
- struts2验证表单xml文件名
- C++著名程序库的比较和学习经验
- 如何获得枚举中的值