前段时间有多个网友询问在64位Matlab中如何使用WASPCN(水和蒸汽性质计算软件)的方法,一直没能给出解决方案。

最近自己有个项目也需要在64位Matlab中如何使用WASPCN(水和蒸汽性质计算软件),不得不设法解决问题了。

整个解决过程还真不简单。

需要先把原来的WASPCN.dll修改出64位版本的dll,由于原来dll是采用Delphi开发的,64位版本修改过程遇到了一些技术问题一直未能解决,最后不得不放弃,改用VC来重新dll。

还好以前有基础,先把32位dll的编程语言由Delphi换成VC,调试通过获得了waspcn32.dll,并进行了软件测试。 然后再改成64位版本的,编译获得了waspcn64.dll。

最后就是完成Mex扩展库的更新, 分别编写出32位版本的WASPCNMEX32.mexw32和64位版本的WASPCNMEX64.mexw64。

现在在Matlab可以采用两种方式装载WASPCN计算库。

方法一:装载Mex扩展库方式。
方法二:装载普通DLL库方式。

一、在MATLAB中使用《水和蒸汽性质计算》(WASPCN)的方法(采用Mex方式)。
--------------------------------------(32 位 MATLAB)----------------------------
(1)确保Waspcn32.dll在操作系统的搜索路径(例如:D:\Program Files\MATLAB\R2011b\runtime\win32)中,或MATLAB的可搜索路径中。(可通过Path命令来查看。)。
(2)把Mex扩展库WASPCNMEX32.dll文件拷贝到MATLAB的userpath路径(例如:C:\Users\WASPCN\Documents\MATLAB)中。(可通过userpath命令来查看。)
为了和高版本的Matlab兼容(比如Matlab R2008),需要把WASPCNMEX32.dll的扩展名由dll改成mexw32(即WASPCNMEX32.mexw32)。
(3)在MATLAB的命令窗口中输入如下形式的命令来计算(请注意WASPCNMEX32必须是大写,其它函数可以大小写混用)。
%a.输入4参数,输出2参数
[N,R] = WASPCNMEX32('PT2N',16.67,535.0,0.00001)
   
%b.输入3参数,输出2参数
[H,R] = WASPCNMEX32('pt2h',16.67,535.0)
    
%c.输入2参数,输出2参数
[T,R] = WASPCNMEX32('P2T',10.0)
%d.输入3参数,输出1参数
H     = WASPCNMEX32('pt2H',16.67,535.0)
%e.输入3参数,输出1参数
T     = WASPCNMEX32('p2T',10.0)
%f.输入3参数,输出7参数
[P,T,H,S,V,X,R] = WASPCNMEX32('PT',16.67,535.0)
--------------------------------------(64 位 MATLAB)----------------------------
    
(1)确保Waspcn64.dll在操作系统的搜索路径(例如:D:\Program Files\MATLAB\R2011b\runtime\win64)中,或MATLAB的可搜索路径中。(可通过Path命令来查看。)。
(2)把Mex扩展库WASPCNMEX64.dll文件拷贝到MATLAB的userpath路径(例如:C:\Users\WASPCN\Documents\MATLAB)中。(可通过userpath命令来查看。)
为了和高版本的Matlab兼容(比如Matlab R2008),需要把WASPCNMEX64.dll的扩展名由dll改成mexw64(即WASPCNMEX64.mexw64)。
(3)在MATLAB的命令窗口中输入如下形式的命令来计算(请注意WASPCNMEX64必须是大写,其它函数可以大小写混用)。
%a.输入4参数,输出2参数
[N,R] = WASPCNMEX64('PT2N',16.67,535.0,0.00001)
   
%b.输入3参数,输出2参数
[H,R] = WASPCNMEX64('pt2h',16.67,535.0)
    
%c.输入2参数,输出2参数
[T,R] = WASPCNMEX64('P2T',10.0)
%d.输入3参数,输出1参数
H     = WASPCNMEX64('pt2H',16.67,535.0)
%e.输入3参数,输出1参数
T     = WASPCNMEX64('p2T',10.0)
%f.输入3参数,输出7参数
[P,T,H,S,V,X,R] = WASPCNMEX64('PT',16.67,535.0)    

二、在MATLAB中使用《水和蒸汽性质计算》(WASPCN)的方法(采用LoadLibrary方式)。

--------------------------- 32位 的matlab ----------------

(1)确保Waspcn32.dll在操作系统的系统搜索路径中(例如:D:\Program Files (x86)\MATLAB\R2014a\runtime\win32)或MATLAB的可搜索路径中。(可通过Path命令来查看。)
(2)把WASPCN32.h文件拷贝到MATLAB的userpath路径(例如:C:\Users\WASPCN\Documents\MATLAB)中。(可通过userpath命令来查看。)
或者
创建自定义目录(例如:D:\Program Files (x86)\MATLAB\R2014a\toolbox\WASPCN)并添加到系统path
%  把创建的目录添加到系统path中
addpath(genpath('D:\Program Files (x86)\MATLAB\R2014a\toolbox\WASPCN'));
%  保存路径
savepath; 
(3)在MATLAB的命令窗口中输入如下形式的命令来调用WASPCN中的函数。
% 装载函数库(loadlibrary dll文件名 h文件名)
loadlibrary WASPCN32 WASPCN32.h;
%
% 调用函数calllib('dll文件名', 'T_P97', 16.0)
T=calllib('WASPCN32', 'T_P97', 16.0)
%
P=calllib('WASPCN32', 'P_T97', 300.0)
%
H=calllib('WASPCN32', 'H_PT97', 16.0,535.0)
%
% 卸载函数
unloadlibrary WASPCN32
--------------------------- 64位 的matlab ----------------
Win7 64位系统 安装64位的matlab
(1)确保Waspcn64.dll在操作系统的系统搜索路径中(例如:D:\Program Files\MATLAB\R2011b\runtime\win64)或MATLAB的可搜索路径中。(可通过Path命令来查看。)
(2)把WASPCN64.h文件拷贝到MATLAB的userpath路径(例如:C:\Users\WASPCN\Documents\MATLAB)中。(可通过userpath命令来查看。)
或者
创建自定义目录(例如: D:\Program Files\MATLAB\R2011b\toolbox\WASPCN)并添加到系统path
%  把创建的目录添加到系统path中
addpath(genpath('D:\Program Files\MATLAB\R2011b\toolbox\WASPCN'));
%  保存路径
savepath; 
(3)在MATLAB的命令窗口中输入如下形式的命令来调用WASPCN中的函数。
% 装载函数库(loadlibrary dll文件名 h文件名)
loadlibrary WASPCN64 WASPCN64.h;
%
% 调用函数calllib('dll文件名', 'T_P97', 16.0)
T=calllib('WASPCN64', 'T_P97', 16.0)
%
P=calllib('WASPCN64', 'P_T97', 300.0)
%
H=calllib('WASPCN64', 'H_PT97', 16.0,535.0)
%
% 卸载函数
unloadlibrary WASPCN64
    

当然,这两个WASPCN  For Matlab的接口可以从scyangyu.ys168.com下载。

再次完善了 WASPCN for Matlab的更多相关文章

  1. MATLAB 与 Excel 接口

    MATLAB 与 Excel 接口MATLAB 与 Excel 有两种接口方式:一种是通过 MATLAB 提供的 Excel 生成器,生成220 MATLAB 实用教程DLL 组件和 VBA 代码,实 ...

  2. SQL Server 维护计划实现数据库备份(策略实战)

    一.背景 之前写过一篇关于备份的文章:SQL Server 维护计划实现数据库备份,上面文章使用完整备份和差异备份基本上能解决数据库备份的问题,但是为了保障数据更加安全,我们需要再次完善我们的备份计划 ...

  3. 从零开始编写自己的C#框架(7)——需求分析

    本章内容虽然叫“需求分析”,实际上关于具体的需求分析操作步骤并没有深入去写,因为细化的话那将是一本厚厚的书,而需求分析在本系列中,是帮助大家了解项目的基本要求(主要针对本项目而已).而写本章的主要目的 ...

  4. php之验证码小程序

    验证码功能(个人理解): 减轻服务器的压力(如12306的验证码功能): 防止暴力注册 个人思路:在a-z,A-Z,1-9生成n位随机的数来构成新的验证码. 关于生成验证码的几个小函数 range() ...

  5. background-image 和 img

    一:解决div里面的img图像宽度不变,高度不变!   超出div部分设置隐藏! 图片:1920x526 div容器: 1423x526 1. background-image:样式实现 img: 标 ...

  6. 【转】从零开始编写自己的C#框架(7)——需求分析

    转自:http://www.cnblogs.com/EmptyFS/p/3653934.html 本章内容虽然叫“需求分析”,实际上关于具体的需求分析操作步骤并没有深入去写,因为细化的话那将是一本厚厚 ...

  7. SQL Server 2008 维护计划实现数据库备份

    SQL Server 2008 维护计划实现数据库备份(最佳实践) 2013-08-29 09:08 by 听风吹雨, 173 阅读, 2 评论, 收藏, 编辑 一.背景 之前写过一篇关于备份的文章: ...

  8. SQL Server 2008 维护计划实现数据库备份(最佳实践)

    一.背景 之前写过一篇关于备份的文章:SQL Server 维护计划实现数据库备份,上面文章使用完整备份和差异备份基本上能解决数据库备份的问题,但是为了保障数据更加安全,我们需要再次完善我们的备份计划 ...

  9. Linux 中 Windows 中文乱码

    Linux 下 Windows 源代码中文乱码 由于 windows 和 linux 对文本的编码方式不同,所以经常会有 windows 中生成的文本在 linux 中打开乱码的情况. 比如: 我面临 ...

随机推荐

  1. UNIX域套接字(unix domain)

    UNIX域套接字用于在同一台机器上运行的进程之间的通信. UNIX域套接字提供流和数据报两种接口. 说明:UNIX域套接字比因特网套接字效率更高.它仅赋值数据:不进行协议处理,如添加或删除网络报头.计 ...

  2. underscore.js库的浅析

    Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文称“Underscore对象”).生成一个Underscore对象: ...

  3. 线程小demo

    下午就手写了两个demo,整理了一下. #!/sur/bin/env python # -*- coding:utf-8 -*- __author__ = 'ganzl' import threadi ...

  4. table 细边框

    table { border-collapse: collapse; border: none; width: 200px; } td { border: solid #000 1px; }

  5. jQuery实现鼠标拖动改变Div高度

    最近项目中需要在DashBoard页面做一个事件通知栏,该通知栏固定位于页面底部,鼠标拖动该DIV实现自动改变高度扩展内容显示区域. 以下是一个设计原型,基于jQuery实现,只实现了拖动效果,没有做 ...

  6. LINUX退出当前进程——比较return、exit()

    1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exi ...

  7. VS 2008 快捷键

    注释代码:<Ctrl+K,C>取消注释:<Ctrl+K,U> 封装字段(生成get.set方法): <Ctrl+R,E> 定位大括号范围:光标放在其中一个括号的位置 ...

  8. 史航416第九次作业&总结

    一.知识点总结: 1.二维数组定义的形式:类型名 数组名[行长度] [列长度] 例如:int a[3][2]:定义一个二维数组a,3行2列,6个元素: 2.二维数组引用的形式:类型名 数组名[行下标] ...

  9. appium远程调用appium server

    如何通过本地的代码,调用远程的server呢?   例如:我有两台电脑A(192.168.112.10)和B(192.168.112.11),那我怎么能在A执行本地脚本,但是使用B上的server呢? ...

  10. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...