前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab基础入门

matlab基础入门

作者头像
sofu456
发布2022-01-05 14:13:41
6010
发布2022-01-05 14:13:41
举报
文章被收录于专栏:sofu456sofu456

文件类型

  • m脚本文件
  • mlx实时脚本,输出结构在文本中显示,类似python Jupyter
  • fig图窗文件,支持和m文件交互
  • mexw64文件,mex test.c编译mex文件

c++和matlab相互调用

  • 通过loadlibrary、libfunctions、calllib调用c++dll文件(addpath设置dll目录)
  • 通过deploytool编译m文件到c++dll文件,或者独立的exe(setenv或者getenv设置环境变量MW_MINGW64_LOC)

异常

  • 无法对输入文件进行预处理

mingw64环境变量设置有问题

matlab中交互的数据和函数

  • mcl模块,初始化环境,mclmcrInitialize、mclTerminateApplication
  • engine引擎模块(依赖matlab而不是mcr),engEvalString表达式或者matlab引擎计算
  • mex模块,matlab调用matlab模块(c++需要转成matlab模块),mexPrintf打印(disp),mexEvalStringWithTrap或者mexEvalString执行命令
  • emlrt仿真模块

c和matlab交互,需要转换m或者dll为matlab识别的格式后才能调用(m文件转dll,dll转mex、或者loadlibrary生成的文件),不能直接调用

代码语言:javascript
复制
 mclmcrInitialize();
 mclInitializeApplication(NULL,0);
 mxArray* b = mxDuplicateArray(a);
 *((double*)mxGetPr(b))+=1.0;//强制类型转换成double,否则数值不对
 mclTerminateApplication();

matlab带图形的模块调用

代码语言:javascript
复制
int run_main(int argc, char **argv)
{
    mclInitializeApplication(NULL,0);
  	//code
    mclTerminateApplication();
    return 0;
}
int main()
{
    mclmcrInitialize();
    return mclRunMain((mclMainFcnType)run_main,0,NULL);
}

命令行

  • !执行系统命令
  • setenv设置环境变量
  • addpath添加搜索目录,path查询搜索目录
  • deploytool编译exe,dll_test.dll通过loadlibrary生成后面两项,打包成一个单独的exe执行
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件类型
  • c++和matlab相互调用
  • 命令行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档