找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2952|回复: 0
打印 上一主题 下一主题
收起左侧

直接由MATLAB生成MCU可执行代码方法

[复制链接]
跳转到指定楼层
楼主
ID:381399 发表于 2018-7-31 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芭将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;}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表