在C/C++软件开发时,若有一部分核心算法是用Matlab编写,但又不想逐行逐句进行翻译则可以采用Matlab自带的”coder”命令进行代码自动翻译,以达到省时省力的目的。下面对其用法进行详细说明:
1.将matlab代码封装为函数,形式如下:
function [aglA,aglB,aglC] = CalAglOfTriangle(a,b,c)
aglA = acosd((b^2 + c^2 - a^2) / (2 * b * c));
aglB = acosd((c^2 + a^2 - b^2) / (2 * c * a));
aglC = acosd((a^2 + b^2 - c^2) / (2 * a * b));
end
2.新建一个Test.m脚本,调用刚封装的函数
clear all;
aLine = 36371; bLine = 6371; cLine = 34197.667473781417;
[aglA,aglB,aglC] = CalAglOfTriangle(aLine,bLine,cLine)
3.运行测试脚本,查看输出结果
4.在命令窗口输入
coder
5.点击右边的“…”按钮,选择要转换的函数
可以看到.prj工程所在的绝对路径,另外根据需要选择数值转换方式,这里用默认方式
6.点右下角“Next”
7.点击的“…”按钮,选择调用函数的脚本,即Test.m
8.点击“自动定义输入类型“按钮
注意: 这里是三个double型,根据实际可以点击修改
9.点右下角“Next”
10.点击“检查问题“按钮
绿色对勾表示未检测到问题,若检测到问题,应根据提示进行处理!
11.点右下角“Next”
12.根据需要选择要生成的语言C或者C++,点击“生成“
13.稍等片刻,出现如下界面
14.点右下角“Next”
至此,已经转换成功!在提示的路径下可以找到转换后的代码以及示例。
15.找到对应的.h和.cpp
16.用VS新建控制台工程,并将上面的.h和.cpp添加进工程
17.根据编译报错提示,补充缺失的文件
18.在main函数里调用自动生成的函数,运行结果正确
总结:本文演示的只是一个简单的matlab函数(根据三角形三条边计算三个夹角)。实际的matlab代码或者函数可能比较复杂,在根据coder命令提示进行问题检测中可能会遇到各种报错提示,此时无需惶恐,只有静下心去分析,大部分报错都是可以屏蔽或者修改的。笔者之前曾将十几个复杂的Matlab函数最后整合封装为一个C++类。删除多余的头文件后,只剩下一个.h和.cpp就🆗了。