将Matlab程序转变为C语言
环境:
Matlab 2012B
VC 2012
Step1:
编写简单的程序,比如
function y=test_add(x1,x2)
y=x1+x2;
end
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
Step2:
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
在APPS中找到MATALB
Coder
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
点击 Add
files
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
点击Click to
define 这里假定x1,x2是(inf,inf)的二维矩阵
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
在build处选择动态连接库
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
点击Build,开始编译
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
将生成的所有文件拷贝到VC工程目录下(如何建立VC工程这里就不提了)
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
建立一个main函数
#include
#include
int main(int argc,char *argv[]){
system("pause");
return 0;
}
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
添加
头文件
extern "C"{
#include "test_add_emxAPI.h"
#include "test_add.h"
}
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
创立并定义x1,x2,y
#include
#include
extern "C"{
#include "test_add_emxAPI.h"
#include "test_add.h"
}
int main(int argc,char *argv[]){
emxArray_real_T * x1=emxCreate_real_T(9,9);
emxArray_real_T * x2=emxCreate_real_T(9,9);
emxArray_real_T * y=emxCreate_real_T(1,1);
for(int Ii=0;Ii<(x1->size[0]*x1->size[1]);Ii++){
x1->data[Ii]= static_cast<</span>double>(Ii);
x2->data[Ii]= static_cast<</span>double>(Ii)*2.0;
}
system("pause");
return 0;
}
最后计算并验证结果
#include
#include
extern "C"{
#include "test_add_emxAPI.h"
#include "test_add.h"
}
int main(int argc,char *argv[]){
emxArray_real_T * x1=emxCreate_real_T(9,9);
emxArray_real_T * x2=emxCreate_real_T(9,9);
emxArray_real_T * y=emxCreate_real_T(1,1);
for(int Ii=0;Ii<(x1->size[0]*x1->size[1]);Ii++){
x1->data[Ii]= static_cast<</span>double>(Ii);
x2->data[Ii]= static_cast<</span>double>(Ii)*2.0;
}
test_add(x1, x2, y);
for(int Ii=0;Ii<(y->size[0]*y->size[1]);Ii++){
std::cout<< y->data[Ii] <<std::endl;
}
system("pause");
return 0;
}
![将Matlab程序转变为C语言[转] 将Matlab程序转变为C语言[转]](//simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
加载中,请稍候......