芭將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;}
|