这里提供一种借助于VC++ UDF Studio插件实现调用Matlab函数的方法,且编译好以后的UDF库拿到没有安装对应Matlab版本的机器上仍然可以使用。
1. 官网下载VC++ UDF Studio插件并安装:https://vcudfstudio.github.io/download_cn.html,建议下载学术版(如想进一步采购注册,对高校老师学生比较优惠)
2. 安装Visual Studio(2022R2开始支持VS2010~2019社区、专业或旗舰版,建议安装VS2010旗舰版), C++和C#一起安装,对于64位Fluent还要勾选X64编译器。
3. 安装Matlab 2014a ~ 2021b任一版本(贝塞尔函数可能需要Matlab 2016a以上),必须勾选Matlab Coder,其它视自己喜好安装。
4. 管理员权限打开桌面图标,选择需要的版本并勾选“调用Matlab”后会自动启动Fluent,读入case并点击Fluent嵌入菜单中的“Start Visual Studio”子菜单。
5. 把自带的matlab函数文件MatlabAdd.m改名为Matlabbesselj.m,另外一个自动生成的文件MatlabFunctionTester.m是用来在Matlab中测试调试函数文件用的,这里可以不用管。然后双击打开编辑Matlabbesselj.m,输入以下自定义Matlab函数体。因为这个函数很简单,肯定正确,所以不需要利用MatlabFunctionTester.m来调试它。
function [resultValue]= Matlabbesselj(n,Xvar)
resultValue = besselj(n,Xvar)
end
登录后复制
其中,besselj(n,Xvar)是Matlab的内置贝塞尔函数, n是阶数,Xvar是一个标量或者数组,最后的运算结果是针对Xvar中的每一个数计算其贝塞尔函数值。
点击工具栏上“将.m文件转为C/C++”按钮,输入参数“n”和“Xvar”均设为float或double类型,如果是注册版也可以将Xvar设为矩阵(Dyn*1),即行数为动态,列数是1,这样可以一次性计算多个值,然后点击“确定”开始转换。
等待片刻转换完成后,会自动将对应的转换得到的C/C++头文件MatlabLibrary.h加入到UDF工程中
6. 在udf_source.cpp文件中输入如下示例源代码,并点击“编译UDF”按钮直到编译通过。有任何错误提示,可以双击提示行直接定位到源码中的错误行。编译升稿通过后按“UDF库加载到Fluent”按钮即可载入到Fluent中。
#include "udf.h"
extern "C"
{
#include "MatlabLibrary.h"
}
DEFINE_ON_DEMAND(ComputeBessel)
{
creal32_T result= Matlabbesselj((float)2.0, (float)1.9) // 调用Matlab中besselj函数
Message0("2nd order of Bessel(1.9)=%g\n", result.re)
}
登录后复制
其中,creal32_T实际上是一个结构体,代表复数类型,在文字上右键选择戚拆“Go to Definition”,可以看到其定义如下,其中re代表实部,im代表虚部。对实数输入参数,结果一般虚部为零,所以取实部即可。
typedef struct
{
real32_T re//实部
real32_T im//虚部
} creal32_T
登录后复制
如果出现INFINITY,NAN未声明的标识符的错误,那么请使用较高版本的Visual Studio,例如Visual Studio2015或更高。
7. 执行DEFINE宏,本例由于besselj函数放在DEFINE_ON_DEMAND宏中,所以在Execute On Demand对话框里面手动执行。
8. 运行高笑枣结果如下,结果是正确的。
matlab
开发语言
c++
全网低价,方舟生存进化系列,终于降价了,赶紧下载
精选推荐
广告
MATLAB C Math Library
19下载·2评论
2010年10月20日
MatLab画贝塞尔函数曲线
8253阅读·0评论·5点赞
2013年9月27日
Matlab中的特殊函数使用(合流超几何函数、Kummer函数、贝塞尔函数等)
1395阅读·0评论·1点赞
2022年8月3日
一阶贝塞尔函数matlab,一阶贝塞尔函数
6889阅读·0评论·0点赞
2021年5月1日
matlab中besselj,用c++函数调用matlab绘制besselj曲线
275阅读·0评论·0点赞
2021年4月22日
Fluent UDF中调用Matlab函数(以误差函数erf为例)
1224阅读·0评论·0点赞
2022年4月7日
00:02
00:37
兔年家人在等着更好的生活!免费的爆款理财课来了,真的没说错
00:37
0元启牛理财课
广告
matlab 第一类修正贝塞尔函数,bessel(第一类修正贝塞尔函数)
2077阅读·0评论·0点赞
2021年4月18日
[转载]在Matlab中Bessel函数怎么表示计算
6709阅读·0评论·3点赞
2019年5月18日
为什么MATLAB中ln不是loge,UDF函数当中的Ln,设置不正确
271阅读·0评论·0点赞
2021年5月7日
matlab 贝塞尔函数 虚数,贝塞尔函数及其应用.doc
929阅读·0评论·0点赞
2021年4月26日
matlab 贝塞尔函数 虚数,Bessel函数介绍.pdf
1688阅读·0评论·0点赞
2021年4月26日
贝塞尔函数(原理与实现)
7997阅读·0评论·1点赞
2012年8月22日
Matlab贝塞尔函数(Bessel)实现
1.6W阅读·0评论·3点赞
2014年2月11日
matlab 0阶贝塞尔函数,零阶贝塞尔函数
5124阅读·0评论·0点赞
2021年4月21日
Matlab直接求贝塞尔函数的导函数
1.4W阅读·1评论·1点赞
2009年5月15日
MATLAB中Bessel函数的表示计算
4828阅读·0评论·6点赞
2017年6月14日
MATLAB 函数查询
9662阅读·2评论·27点赞
2017年10月29日
贝塞尔函数matlab代码
9190阅读·0评论·4点赞
2018年12月24日
用c++函数调用matlab绘制besselj曲线
2555阅读·0评论·1点赞
2015年1月30日
去首页
看看更多热门内容
建立一个m文件test2.m,内容如下:function test2
plot(rand(10))
用如下命令编译:
mcc -p -B sglcpp test2.m
编译完成后得到与m文件名相对应圆好的hpp和cpp文含答件、一个主函数文件、bin目录中的两个Fig文件以及一个exe文件。我把需要的只是与谈腔慧m文件相对应test2.hpp,
test2.cpp以及bin目录中
的FigureMenuBar.fig和FigureToolBar.fig保留。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)