文件类型
- 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仿真模块
代码语言:javascript复制c和matlab交互,需要转换m或者dll为matlab识别的格式后才能调用(m文件转dll,dll转mex、或者loadlibrary生成的文件),不能直接调用
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执行