芭将Matlab程序转变为C语言
环境:
Matlab2012B
VC2012
Step1:
编写简单的程序,比如
function y=test_add(x1,x2)
y=x1+x2;
end
Step2:
在APPS中找到MATALBCoder
点击 Addfiles
点击Clicktodefine这里假定x1,x2是(inf,inf)的二维矩阵
在build处选择动态连接库
点击Build,开始编译
将生成的所有文件拷贝到VC工程目录下(如何建立VC工程这里就不提了)
建立一个main函数
#include<iostream>
#include<cstdlib>
int main(intargc,char *argv[]){
system("pause");
return 0;}
添加
头文件
extern"C"{
#include"test_add_emxAPI.h"
#include"test_add.h"
}
创立并定义x1,x2,y
#include<iostream>
#include<cstdlib>
extern"C"{
#include"test_add_emxAPI.h"
#include"test_add.h"
}
int main(intargc,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<double>(Ii);
x2->data[Ii]= static_cast<double>(Ii)*2.0;
}
system("pause");
return 0;}
最后计算并验证结果
#include<iostream>
#include<cstdlib>
extern"C"{
#include"test_add_emxAPI.h"
#include"test_add.h"
}
int main(intargc,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<double>(Ii);
x2->data[Ii]= static_cast<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;}
|