matlab贝塞尔函数调用

matlab贝塞尔函数调用,第1张

有小伙伴咨询在Fluent UDF中如何使用贝塞尔函数,常规情况下需要我们自己去写函数。但我们注意到Matlab提供了丰富的各种运算函数。我们有什么办法把Matlab中的贝塞尔函数给UDF直接调用呢?

这里提供一种借助于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保留。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8220050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存