1、本着尊重原创,大家转载的时候请注明出处,此教程编写不易啊~~
下面开始介绍:MATLAB R2015b的Coder工具使用实例(二)
在我的上一篇博文《【MATLAB工程人员的福音】MATLAB R2015b的Coder工具使用实例(一)》中,我们已经将编写的MATLAB代码成功的转换为了C++代码,生成了如图1的一些文件与文件夹。现在就来讲解一些如何将它们应用到VS环境下。
图1 由MATLAB Coder生成的文件
以下是详细步骤。
第1步:
打开VS2008(在转C++代码时,你用的什么编译器,就打开什么编译器),新建一个控制台应用程序的空白项目,名称与目录自定,我的是“mytset”以及“C:\Users\WangXu\Desktop\mytest”,如图2。
图2 新建一个控制台应用程序的空白项目
第2步:
将图1中【用方框框起来的以及“examples文件夹下”的】.cpp与.h文件拷贝至“C:\Users\WangXu\Desktop\mytest\mytest”目录下,如图3。
图3 文件拷贝
第3步:
进入VS,将图3的文件添加到项目中,如图4
图4 向项目中添加文件
第4步:
双击打开“main.cpp”文件,这是MATLAB Coder为我们创建的一个演示文件,我们可以在这个文件下修改代码,从而来实现在MATLAB中实现的功能。
第5步:
我把“main.cpp”文件重命名为“main_wangxu.cpp”,并将其中的代码做了一番修改,把冗余的注释去掉,全部换为了中文注释,详细代码与详细注释如下:
// 包含的头文件(一个也不能少)
#include "rt_nonfinite.h"
#include "test.h"
#include "main.h"
#include "test_terminate.h"
#include "test_emxAPI.h"
#include "test_initialize.h"
// 输入输出流
#include <iostream>
// 标准名字空间
using namespace std;
// 主函数
int main(int, const char * const [])
{
// 用户定义的输入参数mark_user、num_user、array_user
double mark_user = 3;
double num_user = 4;;
int array_user[4]={1,6,9,8};
// 声明一些最终要带入函数的参数
double mark;
double num;
emxArray_real_T *array;
emxArray_real_T *A;
emxArray_real_T *B;
// 初始化【最终】要计算的量 A B
emxInitArray_real_T(&A, 2);
emxInitArray_real_T(&B, 2);
// 声明一个局部变量result
emxArray_real_T *result;
// 定义一个数组iv0,这个要视输入参数array_user的最大长度而定,如果最大长度为n,则iv0 = { 1, 2 ,...,n}
// 在这里,array_user的最大长度为5,因此可以这样定义数组iv0:
static int iv0[5];
for(int j=0;j<4;j++)
{
iv0[j]=j+1;
}
// 计算局部变量result,其中,4指的是array_user的实际长度,5是array_user的最大长度,0这个数字不用管
result = emxCreateND_real_T(4, *(int (*)[5])&iv0[0]);
// 将array_user的各个分量赋给result的各个分量,其中,4指的是array_user的实际长度
for (int idx1 = 0; idx1 < 4; idx1++)
{
result->data[idx1] = (double)(array_user[idx1]);
}
// 计算需要带入函数的参数的值
mark = mark_user;
num = num_user;
array = result;
// 带入函数计算
test(mark, num, array, A, B);
// 至此,A B已经计算完毕,现在将它们在屏幕上输出
// 首先得到A B的长度L1 L2
int L1,L2;
L1 = A->size[1];
L2 = B->size[1];
// 开始输出
cout<<"A:"<<endl;
for (int i=0;i<L1;i++)
{
cout<<A->data[i]<<endl;
}
cout<<"B:"<<endl;
for (int i=0;i<L1;i++)
{
cout<<B->data[i]<<endl;
}
return 0;
}
打开“test.cpp”文件,将变量“cs”的值全部改为array的长度4。
第7步:
运行,得到如图5结果,经验证,结果正确。
【总结】
我的这两篇博客仅仅起抛砖引玉的作用,其中第一篇是基础,也是比较简单的,严格按照步骤来,在检查问题时如果有错误,就按照错误提示一步一步改,直到转换成功即可;
而第二篇则有难度,针对不同的代码,修改方式不同,需要大家自己研究。最后,祝大家使用愉快!