Matlab与C++混合编程 2--在C++中使用Matlab固有命令
2024-08-30 09:38:45
直接在Visual Studio中运行Matlab固有命令
#include <iostream>
#include"engine.h" // 添加matlab引擎库的头文件
//PATH: D:\Program Files\MATLAB\MATLAB Runtime\v901\runtime\win64
// 包含目录: D:\Program\MATLAB\R2016a\extern\include
// 库目录: D:\Program\MATLAB\R2016a\extern\lib\win64\microsoft
// 附加依赖项: libmat.lib;libeng.lib;libmx.lib;
#pragma comment(lib, "libeng.lib")
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
using namespace std;
int main()
{
Engine *ep;
// 启动引擎
if (!(ep = engOpen("\0")))
{
fprintf(stderr, "\n打开Matlab引擎失败!\n");
return EXIT_FAILURE;
}
// 执行:
int Nsample = 50; //采样率50Hz,每秒50个点
const double PI = 3.1415926;
double *t = new double[Nsample];
for (int i = 0; i <Nsample; i++) //i是时间,i/N是每个采样点的时间间隔,t[i]=2*PI*t
{
t[i] = i * 2 * PI / Nsample;
}
mxArray *T = NULL, *result = NULL;
T = mxCreateDoubleMatrix(1, Nsample, mxREAL); //新建Double型的矩阵,1行Nsample列
memcpy((void *)mxGetPr(T), (void *)t, Nsample * sizeof(t[0])); //把t中数据拷贝到T中
// 把变量T存入Matlab工作区
engPutVariable(ep, "X", T); //拷贝T到引擎中的X变量
// 执行Matlab命令
engEvalString(ep, "Y=cos(X);");
engEvalString(ep, "plot(X,Y);");
engEvalString(ep, "title('y=cos(x)');");
engEvalString(ep, "xlabel('x');");
engEvalString(ep, "ylabel('y');");
fgetc(stdin);
// 清除对象,不能漏!
mxDestroyArray(T);
engEvalString(ep, "close;");
// 关闭引擎,不能漏!
engClose(ep);
cout << "运行完成" << endl;
return 0;
}
最新文章
- JavaScript学习(一) —— 环境搭建与JavaScript初探
- java web学习总结(二十二) -------------------简单模拟SpringMVC
- linux下交叉编译go项目
- 在asp.net mvc模式中使用PartialView返回部分HTML
- .net自定义WebService WSDL
- 17.1---编写一个函数交换两个变量的值(CC150)
- strcat()函数常见问题
- Dapper使用
- [性能分析]linux文件描述符(转)
- Unity NGUI 3.0.4版本 制作网络版斗地主
- sql server 导出
- Python学习笔记1-搭建Python环境 和 Python Hello World!
- iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架
- 使用EntityFramework中DbSet.Set(Type entityType)方法碰到的问题
- 编程之美2.18 数组分割 原创解O(nlogn)的时间复杂度求解:
- Solidity中uint转string
- Java+Selenium 如何参数化验证Table表格数据
- 使用cropper插件进行图片裁剪 并上传
- 【WePY小程序框架实战一】-创建项目
- python第十八课——常用内置函数