利用C语言调用matlab引擎的经历

配置环境

在旁听完一节数学实验课后,对matlab上利用遗传算法编写的产生随机数的代码感到了兴趣,这也使我感受到了matlab丰富且强大的函数功能。但随之而来的也是好奇——能否实现在C语言环境下编写出这一套利用遗传算法产生随机数的程序呢?
于是本人上网搜集了相关资料,很遗憾地发现matlab函数库是属于不被公开的商业机密。但是matlab公司却提供了相关引擎接口,来对接C语言,所以理论上可以通过C语言调用matlab的引擎来执行matlab中的算法。
本人在网上搜集到的调用matlab引擎的方法有二:

  1. 一是程序运行需要完整的matlab软件进行支持;
  2. 二是可以将matlab中的.m文件编译为.dll文件,运行时只需MCR即可。(MATLAB Component Runtime 简称 MCR,主要用于把MATLAB编写的东西打包到没装MATLAB的机器上使用。它是一组独立的共享库,通过它能够执行在MATLAB中编写的M文件。MCR支持MATLAB语言的所有功能。)

现暂时尝试第一种方法。而调用引擎的第一步便是要配置好环境。

包含目录的路径配置

本人使用C语言编译环境为VS2019,所以首先是需要将VS的环境配置好。所以便打开要调用matlab的C语言工程文件,点开它的属性,找到“配置属性”中的“VC++目录”,将matlab中的相关文件路径添加进去。本人在matlab目录下找到相关文件:
Matlab目录下的文件夹
在extern文件夹中:
include文件夹
有一个让学C的人感到亲切而又熟悉的include文件夹。
在这里插入图片描述
点开它,我们发现里面是浩瀚的.h文件海洋。
在这里插入图片描述
于是我们便把这个include文件夹路径添加到VS编译器的“包含目录”中。此处“包含”指那个include目录。这里要注意系统位数,matlab与VS文件的操作位数一定要对应。本人所用电脑为64位,安装的matlab亦为64位。

静态数据库的目录配置

在这里插入图片描述
库目录的路径添加如出一辙,所添加文件夹为include文件夹下方lib文件夹中,win64中的Microsoft文件夹,里面全是.lib文件。

附加依赖项的添加

在这里插入图片描述
然后再在链接器中的输入里,在附加依赖项中加 “libeng.lib;libmat.lib;libmex.lib;libmx.lib;”以便编译器引用所添加的.lib后缀文件们。

系统环境变量的配置

但这还不算完,我们最后还需要到Windows中的“高级系统设置”中找到“环境变量”来设置“系统变量”中的“Path”。
环境变量是个什么东西呢?让我们运行Win+R,在其中输入环境变量path中有的一个文件目录“system32”,会发现系统自动打开了该文件夹;而输入环境变量中没有路径的文件夹名,但系统中存在该文件夹,却不能够打开成功。所以环境变量相当于是告诉系统当用户给的指令不清楚时到里面去找路径,如果有对应的便可以快速打开。
在这里插入图片描述
将电脑上matlab的bin,win64文件夹添加进去。
在这里插入图片描述
理论上配置环境就完成了。

在测试的时候出现了一个小插曲,那便是本人在执行完以上步骤后发现C中还是无法打开”engine.h”文件。但最后解决了,问题出在VS配置管理器中“活动解决方案平台”用的还是x86位的,将其设置为x64位后报错即可消除。

遗传算法产生随机数的实现

下面是本人写的代码:

//一个在给定区间[a, b]内产生随机数的程序
#include<stdio.h>
#include<math.h>
#include<string.h>
#include"engine.h"
#define Percise 0.001
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值