试试Matlab与Python集成,或是Matlab与C集成: function c = add(a,b) c = a+b end 先写一个加法得matlab程序 长这样 点第三个 然后选择我们得代码 生成得名字 这里别自动了,没什么用 手动模式 把里面得变量类型设置一下,因为是C语言 为了代码得通用性,double类型得使用 1x1就是一个标量 点击下一步 我们这里就不出声exe了,我们使用python调用dll文件 生成一个c得代码 稍等一下,就好 ok了
cl -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -D_CRT_SECURE_NO_WARNINGS /Od /Oy- -DMODEL=add -DHAVESTDIO -DUSE_RTMODEL @add_rtw_comp.rsp -Fo"add_initialize.obj" "C:\Users\yunswj\Documents\MATLAB\Examples\matlab\ReadSpreadsheetDataIntoTableEx59168851Example\codegen\dll\add\add_initialize.c" add_initialize.c cl -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -D_CRT_SECURE_NO_WARNINGS /Od /Oy- -DMODEL=add -DHAVESTDIO -DUSE_RTMODEL @add_rtw_comp.rsp -Fo"add_terminate.obj" "C:\Users\yunswj\Documents\MATLAB\Examples\matlab\ReadSpreadsheetDataIntoTableEx59168851Example\codegen\dll\add\add_terminate.c" add_terminate.c cl -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -D_CRT_SECURE_NO_WARNINGS /Od /Oy- -DMODEL=add -DHAVESTDIO -DUSE_RTMODEL @add_rtw_comp.rsp -Fo"add.obj" "C:\Users\yunswj\Documents\MATLAB\Examples\matlab\ReadSpreadsheetDataIntoTableEx59168851Example\codegen\dll\add\add.c" add.c ### Creating dynamic library ".\add.dll" ... link /RELEASE /INCREMENTAL:NO /NOLOGO -subsystem:console,5.02 kernel32.lib ws2_32.lib mswsock.lib advapi32.lib -dll -def:add.def -out:.\add.dll @add_rtw.rsp 正在创建库 .\add.lib 和对象 .\add.exp ### Created: .\add.dll ### Successfully generated all binary outputs.
这段日志是调用得生成器传入得参数 以及对应得输入和输出 matlab与c代码之间得联系 /* * File: add.c * * MATLAB Coder version : 4.1 * C/C++ source code generated on : 30-May-2021 18:23:39 */
/* Include Files */ #include "add.h"
/* Function Definitions */
/* * Arguments : double a * double b * Return Type : double */ double add(double a, double b) { return a + b; }
/* * File trailer for add.c * * [EOF] */
double add(double a, double b) { return a + b; } function c = add(a,b) c = a+b end 两个代码的比较 生成得一套代码 成功 C:\Users\yunswj\Documents\MATLAB\Examples\matlab\ReadSpreadsheetDataIntoTableEx59168851Example\codegen\dll 其实有很多得中间文件被生成 可以使用ctypes来调用dll文件 import ctypes ll = ctypes.cdll.LoadLibrary lib = ll("./add.d") print("the out is {}".format(lib.add(1.0, 2.0)))
这里是执行结果 deploytool 也可以直接得来输入这个东西 弹出这个 点生成python包 开始工作 成功 生成得目录 python.exe .\setup.py install 先安装一下 import add a = add.initialize() b = a.add(1000.0, 89.0) print(b) a.terminate() 里面也可以看到最终 生成的代码 最重要的就是这些了
|
|