MatlabCoder生成C代码的研究与应用
MatlabCoder生成C代码的研究与应用
关键词: Matlab Coder; 嵌入式系统; S3C2440; ARM9
中图分类号: TP311
文献标识码: A
doi: 10. 3969 / j. issn. 1006-2475. 2013. 03. 045
Research and Application of C Code Generated by Matlab Coder
根据错误报 告 的 提 示 修 正 错 误,通 过 不 断 地 修 正 错 误、生成 MEX 函数。通过这种迭代测试 Matlab 算法 是否满足代码生成要求,生成需要的 C 代码。
Step2 首先在 Matlab 中使用 Coder 命令得到代 码产生工程管理界面( 如图 4 所示) ,在管理界面的 设置界面( 如图 5 所示) 设置如下参数: ( 1) 定义 Mat-
2013 年第 3 期 文章编号: 1006-2475( 2013) 03-0175-04
计算机与现代化 JISUANJI YU XIANDAIHUA
总第 211 期
Matlab Coder 生成 C 代码的研究与应用
廖灿灿,张树群,雷兆宜
( 暨南大学信息科学技术学院,广东 广州 510632)
摘要: 借助 Matlab Coder 可以缩短软件开发从方案到实现的时间,加速软件开发。本文提出一种方法: 利用 Matlab 2012a
构上非常规范和精巧,但是缺少了一些关键性的框架 代码,如: 输入输出端接口函数、主程序、头文件等。
2 生成 C 代码的可移植性的实现
本文的目标系统是 Redhat Enterprise Linux 5 操 作系统[5-9],目标板是天嵌推出的基于 S3C2440 芯片 的 ARM9。Matlab Coder 代码 生 成 工 具 生 成 C 代 码 后,就要将这些代码移植到特定的 ARM 板上,实时验 证程序的正确性和稳定性。为了能有效地利用 Matlab Coder 工具,就需要熟悉它生成的 C 代码的文件 内容,文件内容主要包含: ( 1) rtwtype. h 包含了宏定 义数据结构; ( 2) * . c 包含了算子的 C 代码; ( 3) * . h 包 含了算子的头文件命名和引用; ( 4) * initialize. c,* initialize. h 等。以 Sobel 的例子给出如图 7 所示。
matlab封装c代码
matlab封装c代码
MATLAB 可以通过MATLAB Coder 将MATLAB 代码转换为 C 和C++ 代码。
下面是一个简单的步骤概述:
1. 准备MATLAB 代码:首先,您需要确保您的MATLAB 代码是准备好被编译的。
这可能包括使用'static' 变量和避免使用不能被MATLAB Coder 直接处理的函数或操作。
2. 启动MATLAB Coder:在MATLAB 中,使用coder 命令来启动MATLAB Coder。
3. 创建项目:在MATLAB Coder 中,创建一个新的项目,并指定项目的名称和位置。
4. 添加MATLAB 文件:将您的MATLAB 脚本添加到项目中。
5. 定义输入类型:MATLAB Coder 需要知道您的MATLAB 函数的输入参数的类型。
您可以通过定义输入类型来完成这个步骤。
6. 生成C 代码:在定义了输入类型之后,您可以使用MATLAB Coder 来生成C 代码。
7. 封装C 代码:生成的C 代码可以直接用于您的应用程序。
如果您需要将生成的代码封装到一个库中,您可能需要编写一些额外的代码来创建和管理这个库。
请注意,MATLAB Coder 并不能处理所有的MATLAB 函数或操作。
一些特殊的函数或操作可能需要用其他方式进行处理,或者可能完全不能被转换。
在进行封装之前,最好先了解清楚您的MATLAB 代码中是否包含这些不能被转换的元素。
另外,封装 C 代码的过程可能需要一些对 C 或C++ 的深入理解,包括内存管理、指针等等。
如果您不熟悉这些内容,可能需要花一些时间来学习。
matlab 转写成的c++ 代码 编译
将 MATLAB 代码转换为 C++可以使用以下工具将 MATLAB 代码转换为 C++:•MATLAB Coder:MATLAB 内置工具,可以将 MATLAB 代码转换为 ANSI C++ 代码。
•MEXC:MATLAB 外部编译器,可以将MATLAB 代码编译为C++ MEX 函数。
•Simulink Coder:用于将 Simulink 模型转换为 C++ 代码。
编译 C++ 代码转换后的C++ 代码可以像任何其他C++ 代码一样进行编译。
您可以使用以下方法:•使用命令行编译器:使用以下命令编译 C++ 代码:g++-std=c++11-o executable_name source_file.cpp•使用 IDE(集成开发环境):例如,Visual Studio 或 CLion。
示例以下 MATLAB 代码计算两个数字的和:function sum=add(a,b)sum=a+b;end将其转换为 C++ 代码:#include <iostream>using namespace std;int sum(int a,int b){return a + b;}int main(){int a =10;int b =20;int result = sum(a, b);cout <<"The sum is: "<< result << endl;return0;}编译 C++ 代码:g++ -std=c++11 -o add add.cpp执行可执行文件:./add输出:The sum is: 30。
Matlab与C混合编程的方法研究与实现毕业论文
Matlab与C混合编程的方法研究与实现摘要:文章探讨了MATLAB与VC++的优缺点,介绍了VC++与Matlab混合编程的几种方法。
通过二者的结合,既有效地利用了MATLAB强大的数值计算能力和众多的函数,大大减少程序设计的工作量,又继承了VC++良好的程序界面,证明是一种很好的程序设计方法。
具体说明了如何应用Matlab引擎实现混合编程以及如何利用MATCOM进行MATLAB和VC++混合编程,并将两种方法用于数字图像处理。
关键词:MATLAB;VC++;MATCOM;引擎;混合编程;图像处理一、引言1、数字图像处理简介:图像技术由高到低分为三个层次:图像处理、图像分析和图像理解。
图像处理是比较底层的操作,它主要在图像像素级上进行处理,处理的数据量非常大。
数字图像处理最基本的目的就是改善图像,主要是按需要进行适当的变换突出某些有用的信息,去除或消弱无用的信息,如改变图像的对比度,去除噪声或强调边缘的处理等,其基本方法有:直方图修正、灰度变换、图像的频域特性、图像平滑、图像锐化等。
直方图是图像的重要统计特征,是表示数字图像中每一灰度级与该灰度级出现的频率数间的统计关系。
直方图能给出该图像的大致描述,如灰度范围、灰度级的分布、整幅图像的平均亮度等,但它不能完整地描述一幅图像。
通常用横坐标表示灰度级,纵坐标表示频数。
通常一幅均匀量化的自然图像由于其灰度直方图分布集中在较窄的低值灰度区间,引起图像的细节看不清楚,为使图像变得清晰,我们可以通过变换使图像的灰度范围拉开或使灰度分布在动态范围内趋于均匀化,从而增加反差,使图像的细节清晰,达到图像增强的目的。
灰度变换是图像增强的一种重要手段,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
灰度变换可分为线性、分段线性、非线性以及其他的灰度变换。
线性灰度变换实际上使曝光不充分的图像中黑的部分更黑,白的部分更白,从而提高对比度。
图像中的边缘或者线条部分与图像频谱中的高频成分相对应,因此采用高通滤波的方法让高频分量顺利通过,使低频分量受到抑制,就可以增强高频的成分,使图像的边缘或者线条变得清晰,实现图像的锐化。
matlab生成CC++源代码,静态库;动态库
博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
matlab生成 CC++源代码,静态库;动态库
1. 准备好.m 文件; 2. 在命令行窗口输入 coder 指令打开 matlab Coder界面 3. 开始创建流程:
注:如果一次打开 xxx.m 文件自动生成 xxx.prj; 若是已经生成了则选择重新打开即可; 如果要多个.m 文件同时转化则添加所有需要转化的.mቤተ መጻሕፍቲ ባይዱ件; 能够进行转换的 .m文件必须函数,脚本则不可以;
注: 输入参数类型可以不通过导入,手动添加也是可以的;
最后一步生成 需要类型的文件: 自动生成函数包含文件较多,选择需要的文件文件使用即可;
matlab c编译
matlab c编译
MATLAB C编译是将MATLAB代码转换为C代码的过程,以便将其集成到其他应用程序或系统中。
以下是MATLAB C编译的一般步骤:
1. 编写MATLAB代码:首先,您需要编写要在C中编译的MATLAB代码。
这可以是任何有效的MATLAB脚本或函数。
2. 使用MATLAB Coder生成C代码:MATLAB Coder是MATLAB的一个附加工具包,它可以将MATLAB代码转换为C和C++代码。
要使用MATLAB Coder,您需要安装它,并确保您的MATLAB版本与您的C代码生成器兼容。
3. 打开MATLAB Coder应用程序:在MATLAB中,打开MATLAB Coder 应用程序。
您可以通过在命令窗口中键入“coder”来打开它。
4. 配置生成选项:在MATLAB Coder中,您需要配置生成选项。
这包括指定要生成的代码类型(C或C++),指定输入和输出文件的路径,以及设
置其他选项。
5. 生成C代码:在配置好生成选项后,您可以生成C代码。
在MATLAB Coder中,选择“Build”选项,然后选择“Build All”以生成C代码。
6. 使用生成的C代码:生成的C代码将保存在您指定的输出文件中。
您可
以在其他应用程序或系统中使用此代码,就像使用任何其他C代码一样。
需要注意的是,不是所有的MATLAB函数都可以转换为C代码。
一些特定的函数和操作可能无法被转换为C代码,或者转换后的效果可能不如在MATLAB中直接执行。
此外,生成的C代码可能需要特定的编译器和工具链才能正确编译和运行。
matlab coder
Matlab coder 使用总结陈毅2012.4.18很早就想总结一下,一直没时间,拖到现在,诶。
Matlab coder 能将matlab 代码转换成 C代码。
我们知道,matlab是专为数组或者说矩阵运算而设计的,所以先弄清楚matlab 的工作环境与 VC环境是很不一样的。
最重要的一点就是matlab中变量的size 是可以随意变化的,而这在vc中不行,即在vc中是要赋初值的。
我们在转换的过程中很多工作也正是做赋初值这件事。
1 使用之前先用 mex –setup 选择你的 C/C++ 编译器。
2 相应的函数Codegen其作用是告诉matlab你要转换代码,这个虽然不是必须的(不会报错但会有警告)但是很有用。
应为加上codegen 后matlab会直接提示哪些地方需要改动2 coder.allowpcodecoder.allowpcode('plain')在文件最前面使用这个设置,其作用是可以将P文件生成C代码。
这里顺便了解一下matlab的P文件。
这里P是Pseudocode(伪代码)的缩小。
(1)P文件运行速度快。
P文件是对应M文件的一种预解析版本(preparsed version)。
因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。
所以我们就预先作解释,那么以后再使用该M文件时,便会直接执行对应的已解析版本,即P文件。
但又因为Matlab的解析速度非常快,一般不用自己作预解析。
只有当一些程序要调用到非常多的M文件时,如GUI应用程序时,才会作预解析,以增加以后的调用速度。
(2)保密性好p文件是加密文件,只能运行,不能还原成m文件的。
如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。
如果你的代码不想被别人看到,那可以给他P文件。
基于MATLAB和CCS实现代码生成及下载
基于MATLAB和CCS实现代码生成及下载
代码生成:
在MATLAB中,可以使用Embedded Coder或Simulink Coder来生成C语言源代码。
这些工具可以通过模型(使用Simulink进行建模)或MATLAB脚本来生成C代码。
使用Embedded Coder生成的C代码主要针对嵌入式系统开发,例如将MATLAB算法部署到嵌入式控制器。
在MATLAB中,可以通过设置代码生成器参数来定制生成的代码,包括优化选项、代码大小限制和目标处理器选项。
使用Simulink Coder生成的C代码主要用于自动生成嵌入式软件的源代码。
在使用Simulink建模系统时,可以通过使用嵌入式代码自动生成器配置模型来生成C代码。
这个过程包括将模型转换为C代码,执行目标机器的代码生成和生成可执行文件。
CCS是德州仪器(Texas Instruments)开发的一个集成开发环境(IDE),用于嵌入式系统的软件开发和调试。
它支持多种DSP和微控制器,包括德州仪器的TMS320 DSP和Stellaris Cortex-M微控制器等。
总结:。
MATLAB程序转C代码的方法研究
MATLAB程序转C代码的方法研究周世钦;王波涛【期刊名称】《价值工程》【年(卷),期】2018(037)002【摘要】通过MATLAB程序转C代码的研究与应用可以加快软件、算法从研究到实际应用的进程,提高软件、算法研发的效率.对于转C的流程、方法、注意事项以及限制等问题需要深入研究.以MATLAB2014的转C工具MATLAB Coder为基础,分析了MATLAB转C代码的细节,完整地研究了MATLAB代码转成C代码的整体流程.通过合理的转C规范,MATLAB支持常规算法和大多数工具库函数转C,保持原功能、逻辑不便.使用动态预分配内存,外置接口,简化函数等方法,使得一部分非常规算法、不支持转C或限制性MATLAB函数能够正确转化为C语言代码.%The research and application that MATLAB program transforming to C code can expedite the progress from algorithm or software research to practical application and improve the efficiency of software or algorithm development. These problems about transformation's processes, methods, points for attention, limitation and so on need to be further researched. Based on MATLAB Coder of Matlab2014 tool for transforming to C, it analyses details of MATLAB transforming to C code and its whole process. With reasonable transformation specification, MATLAB support general algorithm and most tool functions to transform to C code, which retain intrinsic function and logic. Using some methods such as dynamically pre-allocating memory, external interface and simplifying functions, it alsomakes a part of uncommon algorithm and MATLAB tool functions which are not support to transform to C or have transformation limitation possible to successfully transform to C language code.【总页数】4页(P182-185)【作者】周世钦;王波涛【作者单位】北京工业大学信息学部,北京100124;北京工业大学信息学部,北京100124【正文语种】中文【中图分类】TP311【相关文献】bVIEW开发环境对C代码的移植方法研究 [J], 孙亚飞;梁斌2.基于NC代码的工具配置方法研究 [J], 陈德敏;宋豫川;刘伟刚;徐修文3.AADL构件到RTLinux平台C代码的转换方法研究 [J], 朱江;张茂林4.一种C代码软件设计信息提取方法研究 [J], 雷宇;黄松;于秀山;惠战伟5.一种可扩展的C代码静态分析方法研究 [J], 余亚刚;邱征;魏雪菲因版权原因,仅展示原文概要,查看原文内容请购买。
Matlab Coder生成C代码的研究与应用
( C o l l e g e o f I n f o r ma t i o n S c i e n c e a n d T e c h n o l o g y , J i n a n U n i v e r s i t y , G u a n g z h o u 5 1 0 6 3 2 , C h i n a )
廖灿灿 , 张树群 , 雷兆 宜
( 暨南大学信 息科 学技 术学院 , 广东 广州 5 1 0 6 3 2 )
摘要 : 借 助 Ma t l a b C o d e r 可 以 缩 短 软 件 开 发 从 方 案到 实现 的 时 间 , 加 速 软 件 开 发 。 本 文提 出一 种 方 法 : 利 用 Ma d a b 2 0 1 2 a 的 Ma d a b C de o r 代码生成工具箱 , 将 Ma d a b经 典 图 像 处 理 代 码 转 换 成 高 效 、 可 移 植 的 C代 码 静 态 库 文 件 , 成 功 移 植 到
A R M9开发 系统 下运行 。对 比实验表 明 , 用本 文提 出的方法生 成的软件代 码 , 在嵌入 式 目标 系统 中运行状 况 良好 , 其 易
维 护 性 和 执 行 效 率 等 方 面也 优 于手 工 编 写 的 代 码 , 实 现 了嵌 入 式 系统 软 件 代 码 的 快 速 生成 。
2 0 1 3年第 3期 文章编号 : 1 0 0 6 - 2 4 7 5 ( 2 0 1 3 ) 0 3 - 0 1 7 5 - 0 4
计 算 机 与 现 代 化 J I S U A N J I Y U X I A N D A I H U A
总第 2 1 1 期
Ma t l a b C o d e r 生 成 C代 码 的研 究 与 应 用
MATLABCoder可以从MATLAB代码生成独立的、可读性强、可移植的CC++代码
MATLABCoder可以从MATLAB代码⽣成独⽴的、可读性强、可移植的CC++代码MATLAB Coder可以从MATLAB代码⽣成独⽴的、可读性强、可移植的C/C++代码。
使⽤MATLAB Coder产⽣代码的3个步骤:准备⽤于产⽣代码的MATLAB算法;检查MATLAB代码的兼容性(有些matlab代码语句并不能⽣成c/c++代码);产⽣最终使⽤的源代码或MEX。
利⽤MATLAB Coder⽣成c++代码,并在vs2008中验证:⼀个简单的例⼦,两数相乘:1、安装matlab2011a或者更新版本;2、简单⽣成⼀个foo.m⽂件;function c = foo(a, b)%#codegen%This function muliplies a and bc = a * b其中,%#codegen可以防⽌出现警告错误3、在命令窗⼝,输⼊mex -setpu,选中⼀个存在的编译器;4、在命令窗⼝输⼊coder(图形界⾯),回车,弹出MATLAB Coder Project对话框;5、在New选项卡Name中输⼊⼀个⼯程名foo.prj;点击Ok,弹出MATLAB Coder MEX Function对话框;6、在Overview选项卡中,点击Add files,弹出对话框,选中foo.m打开;7、单击变量a,选择Define by Example…,弹出MATLAB Coder Define by Example对话框,在MATLAB Expression 中输⼊5,点击OK;同样变量b也进⾏相应操作,输⼊6;8、选中Build选项卡,Output type中选择c/c++ Static Library;选中Generate code only;9、点击More settings,GeneralàLanguage选择C++;Interface选项中去掉所有选项;Close;10、点击Build,进⾏编译;点击View report,弹出Code Generation Report对话框,此时,变量a、b、c会显⽰相应的变量信息;11、利⽤vs2008建⽴⼀个控制台应⽤程序,将⽣成的相关⽂件foo.h、foo.cpp、rtwtypes.h、foo_types.h拷到相关⽬录下并添加到应⽤程序中;12、在foo.cpp⽂件中添加#include “stdafx.h”;13、test.cpp⽂件中代码为:#include "stdafx.h"#include "foo.h"#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){double a = 0.0, b = 0.0, c = 0.0;cin>>a>>b;c = foo(a, b);cout<<"c = "<return 0;}⼀个复杂的例⼦,求⼀个数的n次⽅根:1、两个.m⽂件:nrt.m:function [nth_rt, iterations, hstry] = nrt(varargin)%#codegen %This function will use a Newton Search Technique to find %the nth root of a number, a, to the tolerance, tol. %The square root% nrt(10, 2), or nrt(10, 2, 1e-9)%The "n" root%nrt(10, n), or nrt(10, n, 1e-9)a = varargin{1};n = varargin{2};if nargin ~= 3tol = 1e-9;elsetol = varargin{3};endif a < 0nth_rt = 0;iterations = 0;hstry = 0;else[nth_rt, hstry] = newtonSearchAlgorithm(a, n, tol);iterations = length(find(hstry ~= 0));%iterations = sum(hstry ~= 0);endnewtonSearchAlgorithm.m:function [x, h] = newtonSearchAlgorithm(b, n, tol) %#codegen %Given, "a", this function finds the nth root of a%number by finding where: x^n-a = 0coder.inline('never'); %使其⽣成⼀个单独的c++⽂件notDone = 1;aNew = 0; %Refined Guess Initializationa = 1; %Initial Guesscnt = 0;h = zeros(50, 1);h(1) = a;while notDonecnt = cnt + 1;[curVal, slope] = f_and_df(a, b, n); % squareyint = curVal - slope * a;aNew = -yint / slope; %The new guessh(cnt) = aNew;if (abs(aNew-a) < tol) %Break if it's convergednotDone = 0;elseif cnt > 49 %after 50 iterations, stopnotDone = 0;aNew = 0;elsea = aNew;endendx = aNew;function [f, df] = f_and_df(a, b, n)%Our function is f=a^n-b and it's derivative is n*a^(n-1).f = a^n-b;df = n*a^(n-1);2、在命令窗⼝输⼊coder(图形界⾯),回车,弹出MATLAB Coder Project对话框;3、在New选项卡Name中输⼊⼀个⼯程名nrt.prj;点击Ok,弹出MATLAB Coder MEX Function对话框;4、在Overview选项卡中,点击Add files,弹出对话框,选中nrt.m打开;5、添加三个输⼊,分别为10、2、1e-9;两个输⼊也可以;6、选中Build选项卡,Output type中选择c/c++ Static Library;选中Generate code only;7、点击More settings,General-->Language选择C++;Interface选项中去掉所有选项;Close;8、点击Build,进⾏编译;点击View report,弹出Code Generation Report对话框;9、利⽤vs2008建⽴⼀个控制台应⽤程序,将⽣成的相关⽂件nrt.cpp、nrt.h、newtonSearchAlgorithm.cpp、newtonSearchAlgorithm.h、nrt_types.h、rtwtypes.h拷到相关⽬录下并添加到应⽤程序中;10、分别在nrt.cpp、newtonSearchAlgorithm.cpp⽂件中添加#include “stdafx.h”;11、test.cpp⽂件中代码为:#include "stdafx.h"#include "nrt.h"#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){double varargin_1 = 0, varargin_2 = 0, varargin_3 = 1e-9;cin>>varargin_1>>varargin_2;double nth_rt = 0, iterations = 0;double hstry_data[50] = {0};int hstry_sizes[1] = {0};nrt(varargin_1, varargin_2, varargin_3, &nth_rt, &iterations, hstry_data, hstry_sizes); cout<<"nth_rt = "<cout<<"iterations = "<cout<<"hstry_data = "<for (int i=0; i<50; i++)cout<}cout<<"hstry_sizes = "<return 0;}。
matlab自动生成C代码
9.编译该工程并查看运行结果
simpleProduct_ref.rsp
html
rtw_proj.tmw
simpleProduct_rtw.mk
rtGetInf.c rtwtypes.h
simpleProduct_terminate.c
rtGetInf.h simpleProduct.c
simpleProduct_terminate.h
登录后才能查看或发表评论立即登录或者逛逛博客园首页
matlab自 动 生 成 C 代 码
1.准备M文件 simpleProduct.m function c = simpleProduct(a,b) c=a*b; 2.在matlab工作界面输入coder,输入工程名称 simpleProduct
3.在工程中添加simpleProduct.m文件
4.定义输入变量a,b的数据类型
5.生成mex函数,测试程序是否正确
பைடு நூலகம்
6.生成C代码,勾选Generate code only
7.在当前目录的 codegen/lib/simpleProduct/ 下可以看到生成一堆.c 和 .h 文件
$ ls codegen/lib/simpleProduct/
buildInfo.mat rt_nonfinite.h
1. #include<stdlib.h> 2. #include<stdio.h> 3. #include"simpleProduct.h" 4. #include"simpleProduct_initialize.h" 5. #include"simpleProduct_terminate.h" 6. 7. int main() 8. { 9. simpleProduct_initialize(); 10. printf("%lf",simpleProduct(5,6)); 11. simpleProduct_terminate(); 12. return 0; 13. }
MATLAB程序转C代码的方法研究
MATLAB程序转C代码的方法研究Method Study of M ATLAB Program Transforming to C Code周世钦Z H O U Shi-q in;王波涛W A N G B o-ta o(北京工业大学信息学部,北京100124)(Information Department,Beijing University of Technology,Beijing 100124,China)摘要:通过MATLAB程序转C代码的研究与应用可以加快软件、算法从研究到实际应用的进程,提高软件、算法研发的效率。
对 于转C的流程、方法、注意事项以及限制等问题需要深入研究。
以MATLAB2014的转C工具M ATLABCoder为基础,分析了 MATLAB 转C代码的细节,完整地研究了 MATLAB代码转成C代码的整体流程。
通过合理的转C规范,MATLAB支持常规算法和大多数工具 库函数转C,保持原功能、逻辑不便。
使用动态预分配内存,外置接口,简化函数等方法,使得一部分非常规算法、不支持转C或限制性 M ATLAB函数能够正确转化为C语言代码。
A bstract:The research and application that MATLAB program transforming toC code can expedite the progress from algorithm or software research to practical application and improve the efficiency of software or algorithm development.These problems about transformation's processes,methods,points for attention,limitation and so on need to be further researched.Based on MATLAB Coder of Matlab2014 tool for transforming to C,it analyses details of MATLAB transforming to C code and its"whole process.With reasonable transformation specification,MATLAB support general algorithm and most tool functions to transform to C code,which retain intrinsic function and ing some methods such as dynamically pre-allocating memory,external interface and simplifying functions,it also makes a part of uncommon algorithm and MATLAB tool functions"which are not support to transform to C or have transformation limitation possible to successfully transform to C language code.关键词:M atlab转C;Coder;代码规范;转C流程;转C限制Key w ords:Matlab transformingto C;Coder;code specification;transformation process;transformation limitation中图分类号:TP311 文献标识码:A文章编号=1006-4311(2018)02-0182-04〇引言目前,利用M a tla b软件作为工具来进行算法设计、验证已经成为研究者们首选的手段之一[2],而通过M atlab 转C,可以直接将M a tla b函数转换成高效优化的C程序,移植到嵌入式环境中去[3]。
MatlabCoder的使用
MatlabCoder的使用Matlab Coder是一个将matlab代码转化为C/C++代码或dll、lib的工具,得到的代码或程序独立于Matlab,可以在其他工程中随意使用。
这样,如果碰到一些数学问题,比如矩阵运算、算法验证等,可以先用Matlab实现,然后方便地转化为源代码在各种应用中使用。
下面来介绍Coder的使用方法,内容参考自Matlab帮助文档。
Coder的使用主要基于3个组件:Matlab、Coder工具箱和C编译器。
一般安装好Matlab后,前两个是默认提供的(执行ver命令可快速查看Coder工具箱是否安装);C编译器默认有提供,但可根据自己的情况更换其他C编译器(Matlab推荐使用其他编译器,自带的性能不佳),具体可执行mex -setup进行编译器配置,如>> mex -setupMEX configured to use 'Microsoft Visual C++ 2013 Professional (C)' for C language compilation.Warning: The MATLAB C and Fortran API has changed to support MATLABvariables with more than 2^32-1 elements. In the near future you will be required to update your code to utilize thenew API. You can find more information about this at:/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.To choose a different language, select one from the following: mex -setup C++mex -setup FORTRAN完成配置后,开始转换Matlab函数代码,例如下面函数,它实现了搜索banana函数的最小值位置,并计算矩阵A的行列式:TestCoderFcn.m% Test for Coderfunction [x, Adet] = TestCoderFcn(x0, p0, A)%#codegen% search minimumglobal pp = p0;x = fminsearch(@myfun, x0);% calculate detAdet = det(A);end% banana functionfunction f = myfun(x)global pf = 100*(x(2)-x(1)^2)^2+(p-x(1))^2;end使用代码main.m做效果测试:% 测试clcclearclose allx0 = [1,3];p0 = 2;A = [1 -2 4; -5 2 0; 1 0 3]; % det(A) = -32[x, Adet] = TestCoderFcn(x0, p0, A);fprintf('函数的极值出现在(%f, %f)\n', x)fprintf('矩阵的行列式为%f\n', Adet)测试结果为:函数的极值出现在(2.000005, 4.000021)矩阵的行列式为-32.000000在转化前,需要对代码进行3种检查:代码语法检查、代码可转换检查和运行时检查。
matlab代码 define转c代码
matlab代码define转c代码将MATLAB代码转换为C代码是一个复杂的过程,因为MATLAB和C是两种完全不同的编程语言,它们在语法、数据类型、函数库等方面都有很大的差异。
因此,直接将MATLAB代码逐行转换为C代码是不可能的。
然而,有一些工具可以帮助你进行这样的转换。
MathWorks 公司提供的MATLAB Coder是一种工具,它可以将MATLAB代码转换为C和C++代码。
下面是一个简单的示例,说明如何使用MATLAB Coder 将MATLAB代码转换为C代码:1.首先,你需要确保你的MATLAB代码是可编译的。
这意味着你的代码必须使用支持MATLAB Coder的函数和特性。
你可以查看MathWorks的文档,了解哪些函数和特性是支持的。
2.在MATLAB中打开你的代码,然后使用MATLAB Coder应用程序。
你可以在MATLAB命令窗口中输入`coder`来打开它。
3.在MATLAB Coder中,选择“新建项目”,然后选择你要转换的MATLAB文件。
4.在项目设置中,选择你要生成的目标语言(在这种情况下是C)。
5.在“代码生成”选项卡中,选择你需要的选项,例如是否要包含生成的代码文件等。
6.点击“生成”按钮,MATLAB Coder将开始转换你的MATLAB代码为C代码。
7.生成的C代码将保存在你指定的文件夹中。
需要注意的是,生成的C代码可能需要进行手动调整和优化,以适应特定的硬件或操作系统环境。
此外,并不是所有的MATLAB函数都可以转换为C代码,你需要使用支持的函数和特性。
另外,也有一些第三方工具可以将MATLAB代码转换为C 代码,例如Simulink Coder和Embedded Coder等。
这些工具可以帮助你更方便地将MATLAB代码转换为C代码,但是可能需要额外的许可和配置。
matalb中m文件转C代码
将Matlab的m文件转为C/C++语言(2016.10.12亲手试验)系统环境:①matlabR2014b(注意:需要包含MA TLAB Coder组件,可使用ver命令,检测组件列表中是否包含);②VS2013第一步:建立脚步文件(即.m文件);编写最简单的代码,并保存为test_to_C.m;第二步:点击应用程序(对应英文版为:APPS),找到MATLAB Coder,点击进入(如界面中找不到时,可点击右侧的下拉菜单寻找);进入MATLAB Coder Project设置界面,将要保存的名称更改名称为test_t_C.prj,点确定第三步:在右侧MATLAB Coder:MEX Function工作区中,overview下第一块区域中点击“添加文件”(对应英文版为:Add files),选择test_to_C.m文件;第四步:点击变量右侧的“Click to define”。
修改变量a和b的变量类型,选择double 1*1即可第五步:点击“Build”(Overview旁边的标签),然后更该输出文件名称为“test_to_C”,输出类型选择“C/C++ Static Libray”,并勾选Generate code only,之后点击More settings;第六步:在设置界面,点击“所有设置”,找到Advanced->code Style->Language,选择C++后关闭;第七步:点击“编译”按钮,如下图;编译完成后可点击View Report查看C代码结果,如下图:接下来就可以在vs中使用了。
第一步:打开vs2013,依次点击“文件”->“新建项目”,选择Visual C++ ->Win32—>Win32控制台应用程序,直接点“完成”即可,默认的主函数入口如下:第二步:打开test_to_C.m文件所在位置,在codegen->lib->test_to_C文件夹下选择test_to_C.h,test_to_C.cpp,test_to_C_types.h,rtwtypes.h,rt_nonfinite.h,rt_nonfinite.cpp共6个文件,复制到新建的vs工程文件底层,(即.vcxproj文件所在位置);第三步:分别在头文件和源文件中,右键->添加->现有项,将以上六个文件加进来;第四步:更改所有源代码为如下内容:#include"stdafx.h"#include"test_to_C.h"#include<iostream>using namespace std;int main(){double a = 0.3, b = 5.0, c = 0.0;c = test_to_C(a, b);cout << "c=" << c << endl;getchar();return 0;}第五步:打开test_to_C.cpp文件,在头文件中加入#include"stdafx.h";最后:点击生成->生成解决方案,运行,看到运行结果。
matlab m函数 转化为c代码
随着科学技术的不断发展,工程领域的计算需求也日益增长。
作为一款广泛应用于科学计算和工程设计中的软件,Matlab在模拟、分析和可视化等方面具有非常强大的功能。
然而,在一些对计算速度要求较高的场合,Matlab的执行效率往往无法满足需求。
这时将Matlab中的M函数转化为C代码成为了一种解决方案。
1. Matlab M函数的优势Matlab是一种高效的数学软件,以其强大的可视化功能和友好的编程环境而著称。
M函数作为Matlab中最基本的编程形式,具有以下优势:(1)语法简单:Matlab语法简洁明了,使得M函数的编写十分方便。
(2)丰富的库函数:Matlab内置了丰富的数学、统计学、信号处理等库函数,对于科学计算有着非常强大的支持。
(3)交互式调试:Matlab提供了非常方便的交互式调试环境,使得程序的编写和调试都变得十分便捷。
2. 将Matlab M函数转化为C代码的必要性尽管Matlab具有上述诸多优势,但在一些对计算速度要求较高的场合,Matlab的执行效率却往往无法满足需求。
这时就需要将M函数转化为C代码。
C语言是一种高效的编程语言,其代码可以直接被编译成机器码,在运行效率上有着明显的优势。
将Matlab M函数转化为C代码可以提高程序的运行速度。
3. Matlab M函数转化为C代码的方法Matlab提供了丰富的工具和函数,用于将M函数转化为C代码。
一般来说,可以采取以下几种方法进行转化:(1)使用Matlab Coder:Matlab Coder是Matlab冠方提供的一个工具,它可以将M函数转化为C代码或C++代码。
使用Matlab Coder可以方便快捷地进行转化,并且支持对代码进行优化和定制。
(2)手动转化:对于一些较为简单的M函数,也可以选择手动进行转化。
这种方法需要对C语言有一定的了解,需要将M函数中的算法逻辑逐行转化为C代码。
4. M函数转化为C代码的注意事项在进行M函数转化为C代码的过程中,需要注意以下几点:(1)数据类型的转换:Matlab和C语言的数据类型并不完全一致,需要特别注意类型的转换。
matlab coder使用方法
matlab coder使用方法Matlab Coder 是一个用于将 MATLAB 代码转换为 C 或 C++ 代码的工具。
它可以将 MATLAB 中的算法和函数转换为高效的可移植代码,以便在嵌入式系统、自动驾驶车辆和其他需要高性能的应用程序中进行部署和集成。
使用Matlab Coder 之前,首先需要安装MATLAB 并购买适用的许可证。
然后,按照以下步骤使用 Matlab Coder:1. 准备 MATLAB 代码:将要转换为 C/C++ 的 MATLAB 代码保存在一个独立的文件中,确保它是可独立运行的,并且不依赖于MATLAB 工作区或其他 MATLAB 特定的函数。
2. 创建一个新的 MATLAB 项目:在 MATLAB 中,选择 "新建项目",然后选择 "MATLAB 项目"。
给项目命名并选择保存的位置。
3. 将 MATLAB 代码添加到项目中:在 MATLAB 项目窗口中,选择"添加文件",然后选择要转换为 C/C++ 的 MATLAB 代码文件。
可以一次选择多个文件。
4. 配置项目设置:在MATLAB 项目窗口中,选择"项目设置",然后配置项目的设置。
可以设置目标语言为C 或C++,选择生成代码的目标平台(如Windows、Linux 或嵌入式系统),以及其他代码生成选项。
5. 进行代码配置和优化:使用MATLAB Coder 提供的代码配置和优化选项来优化代码的生成。
可以设置函数接口、数据类型、内联函数等。
6. 生成C/C++ 代码:在MATLAB 项目窗口中,选择"生成",然后选择 "生成代码"。
MATLAB Coder 将会分析 MATLAB 代码,并将其转换为 C/C++ 代码。
7. 验证生成的代码:在生成代码后,可以使用MATLAB 提供的代码验证功能来验证生成的C/C++ 代码的正确性和性能。
Matlab Coder自动生成C C++代码
Automatic C Code Generation from MATLAB Marc Barberis –Application Engineering Group, MathWorks Inc.AGENDA•Quick Demo•Benefits of Automatic C Code Generation•In-Depth Example•Comparison between MATLAB Coder and MATLAB Compiler •Fixed-Point Design•ConclusionDemo: Using Generated C Code in a Stand-Alone C ProjectWhy translate MATLAB to C?Integrate MATLAB algorithms w/ existing C environment using sourcecode or static librariesPrototype MATLAB algorithms on desktops as standalone executables Accelerate user-written MATLAB algorithmsImplement C/C++ code on processors or hand-off to softwareengineersChallenges with Manual Translationfrom MATLAB to C/C++Hard to modify requirements during developmentAutomatic Translation of MATLAB to CImplementation ConstraintsElement by element multiply logical function a= foo(b,c )a = b * c;void foo(const double b[15],Element by element multiply Dot product Matrix multiply Dot product Matrix multiply Element by element multiply Dot productMatrix multiplyinteger real complex …double foo(double b, double c){return b*c;const double c[30], double a[18]){int i0, i1, i2;for (i0 = 0; i0 < 3; i0++) {for (i1 = 0; i1 < 6; i1++) {a[i0 + 3 * i1] = 0.0;for (i2 = 0; i2 < 5; i2++) {C}a[i0 + 3 * i1] += b[i0 + 3 * i2] * c[i2 + 5 * i1];}}}}Implementation Constraints •Polymorphism•Memory allocation•Processing matrices & arrays•Fixed-point data types7 Lines of MATLAB107 Lines of CIn-Depth Demo of MATLAB Coder•Coder UI•Code Generation options•Generate code•Browse through reportSupported MATLAB LanguageFeatures and FunctionsBroad set of language features and functions/system objects supported for •code generationMatrices and Arrays Data Types Programming Constructs Functions•Matrix operations •N-dimensional arrays •Subscripting •Frames •Persistent variables •Global variables •Complex numbers•Integer math•Double/single-precision•Fixed-point arithmetic•Characters•Structures•Numeric classes•Arithmetic, relational, andlogical operators•Program control(if, for, while, switch)•MATLAB functions and sub-functions•Variable length argument lists•Function handlesSupported algorithms•> 400 MATLAB operators and functions•> 200 System objects for•Variable-sized data•System objects•Classes•Signal processing•Communications•Computer visionCode Generation Readiness ToolInstant feedback on code generation compliance of your MATLAB code Provides estimate of effort needed to generate C code from your MATLAB code on a scale of 1 to 5 Provides a list of issues that need to be resolved in one report Gives detailed information on unsupported functionsOther Deployment OptionsDeploying Applications with MATLAB Compiler• Share applications– Desktop or Web software components – Supports full MATLAB language and most toolboxes – Requires MCR• Free run-time library • Royalty-free deployment.exe .dll Excel Java Web COM .NETMATLAB CompilerMATLAB Builder EX MATLAB Builder JA MATLAB Builder NEChoosing the Right Deployment SolutionMATLAB Coder and MATLAB CompilerMATLAB CoderOutputPortable and readable C source code Subset of language Some toolboxesMATLAB CompilerExecutable or software component/library Full language Most toolboxes Graphics MATLAB Compiler Runtime (MCR) Royalty-freeMATLAB supportRuntime requirement License modelNone Royalty-freeFixed Point Design: MotivationConsideration RAM and ROM consumption Execution time Hardware power consumption Development time Implementation complexity Error Prone Fixed Point Small Faster Low Long More complex. Control of word length, rounding mode, saturation... Harder to develop. More prone to programming errors Floating Point Large Slower High Short Less Easier to developFixed Point Design: PitfallsArithmetic Pitfalls – Introduces quantization errors – Word length and Fraction Length must be specified For every variable – Degradation must be analyzed L-N Noverflow Integer + sign L fractional QuantizationFixed Point Design: Pitfalls• Fixed Point C Pitfalls– – – – No native fixed-point math libraries No built-in overflow / underflow checks No tools to determine optimal integer and fractional bits No visualization of floating and fixed-point representationsL-N overflow Integer + sign L fractionalN QuantizationFixed-Point Toolbox: MATLAB Fixed-Point ObjectSigned: true WordLength: 16 FractionLength: 13Fi Object Value NumericType FimathRoundMode: round OverflowMode: saturate ProductMode: FullPrecision MaxProductWordLength: 128 SumMode: FullPrecision MaxSumWordLength: 128 CastBeforeSum: true1. Controls output type of operations 2. Allows natural operator syntaxA*B, A+B, pow2(A,3)Fixed Point Design in MATLABCollect histograms for signalsRun MATLAB code with floating point data types Simulation results for all variablesAnalyze simulation min/maxDemo: Fixed Point Design in MATLABDetermine best fixed-point settings Simulate the fixed-point code Generate fixed-point C codeBenefits of C Code Generation with MATLAB Coder• Generate C code directly– Automatically generated C code is correct by construction – Reduce verification effort and cost• Maintain floating and fixed-point designs in a unified environment– Run simulations in double precision or fixed-point as needed – Validate fixed-point effects during system design phase。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一幅为 Matlab 代码运行效果,右边一副为生成的 C 代码在 ARM9 上运行效果。
图 2 Matlab Coder 工作流程图 表 1 Matlab Coder 支持的内容
矩阵和数组
类和数据类型
编程结构
Байду номын сангаас函数
矩阵运算 N 维数组 下标操作
帧 持续变量 全局变量
复数 整形数据匹配 单精度双精度
定点运算 字符
结构体 数值类 变长度数据 系统对象
数学运算 逻辑关系操作符 程序控制语句( if,for,while,switch) 和结构
0引言
目前,嵌入式系统的应用逐渐渗透到各行各业的 电子产品中,因此市场对电子产品软件开发的需求呈 现快速增长的趋势,软件开发面临着高速、高效的挑 战。针对这一现状,嵌入式开发的工程师们一直致力 于寻求更加高效的软件开发手段。MathWorks 公司 拥有的 Matlab 是一款高效软件开发工具[1],在它的 产品族中,Simulink Coder[2]、Matlab Coder[3]可以直接 将 Simulink 的模型框图和 Matlab 函数转换成高效优 化的 C 程序代码[4]。这两种 C 代码生产工具各具特 色: Simulink Coder 直接建立 Simulink 模型再转换成 C 代码; Matlab Coder 工具是 MathWorks 公司在 2011 年推出的 Matlab2011a 版本中推陈出新的产品,它可 以将 Matlab 函数直接生成 C 代码。Matlab Coder 的
子函数和部分 Matlab 函数 可变长度参数列表 函数处理 支持的算法:
400 个 Matlab 运算符和函数 200 个系统对象( 通信系统、DSP 系统、计算机视觉)
1. 2 测试阶段
MEX 功能函数验证 C 代码工作过程如图 3 所示。 Step1 在 Matlab 函数的第一行结尾加入关键词 “% #Codegen”,它告诉 Matlab 正在使用的函数是用 于代码生成,需要使用 Matlab Coder 工具。当代码生 成中产生错误时,Matlab Coder 会生成一个错误报告,
由 Matlab Coder 生成的嵌入式 C 语言代码,在结
图 8 ARM 板运行的 Sobel 得到的边缘检测图
生成的代码文件不能直接调用到 Linux 环境下 去编译,还需要做一些处理: ( 1) main 主程序需要手
178
计算机与现代化
2013 年第 3 期
工编写; ( 2) 数据结构最好编写成自己熟悉的结构和 定义[14]; ( 3) 去除一些不必要的冗余代码文件。
优越性在于不需要先建立模型。借助 Matlab Coder, 软件工程师不需要将设计的算法进行 C 编程,而是 利用 Matlab 中强大的函数库,建立 Matlab 函数,通过 设置目标语言需要的参数,生成能脱离 Matlab 环境 独立运行的 C 代码,这样大大减轻了软件工程师的 编码工作量。工程师们只需要在嵌入式系统中搭建 好软件环境,通过函数调用 Matlab Coder 生成的 C 代 码,由 Linux 嵌入式交叉编译工具编译,就能直接到 目标机 ARM 上运行程序,大大缩短了软件产品的研 发周期。
2013 年第 3 期 文章编号: 1006-2475( 2013) 03-0175-04
计算机与现代化 JISUANJI YU XIANDAIHUA
总第 211 期
Matlab Coder 生成 C 代码的研究与应用
廖灿灿,张树群,雷兆宜
( 暨南大学信息科学技术学院,广东 广州 510632)
摘要: 借助 Matlab Coder 可以缩短软件开发从方案到实现的时间,加速软件开发。本文提出一种方法: 利用 Matlab 2012a
的 Matlab Coder 代码生成工具箱,将 Matlab 经典图像处理代码转换成高效、可移植的 C 代码静态库文件,成功移植到
ARM9 开发系统下运行。对比实验表明,用本文提出的方法生成的软件代码,在嵌入式目标系统中运行状况良好,其易
维护性和执行效率等方面也优于手工编写的代码,实现了嵌入式系统软件代码的快速生成。
2013 年第 3 期
廖灿灿等: Matlab Coder 生成 C 代码的研究与应用
177
lab 函数中的数据类型和大小; ( 2) 设置目标硬件为 ARM9; ( 3) 选择生成 C 代码标准为 C89C / C90; ( 4 ) 代码风格、终 端 初 始 化 的 选 择 等。 也 可 以 使 用 命 令 “Codegen* ”( * 代表文件名) 生成 MEX 功能函数, Matlab 通过 MEX 功能函数直接调用 Matlab Coder 生 成的 C 代码,并比较编译测试生成的 C 代码与 Matlab 原函数的执行结果是否一致,这里以一个 Sobel 算子 的图像边缘检测测试结果作为示例,如图 6 所示,执 行图像边缘检测效果基本一致。
1. 1 准备阶段
根据 Linux 下软件环境要求,编写 Matlab 代码。 以图像边缘检测为例设计编写 Matlab 代码,并指定 这些 Matlab 文件输入的数据类型。在这个过程中需 要了解 Matlab Coder 工具支持生成 C 代码的 Matlab 函数类型,如表 1 所示。
图 3 MEX 功能验证 C 代码过程图
构上非常规范和精巧,但是缺少了一些关键性的框架 代码,如: 输入输出端接口函数、主程序、头文件等。
2 生成 C 代码的可移植性的实现
本文的目标系统是 Redhat Enterprise Linux 5 操 作系统[5-9],目标板是天嵌推出的基于 S3C2440 芯片 的 ARM9。Matlab Coder 代码 生 成 工 具 生 成 C 代 码 后,就要将这些代码移植到特定的 ARM 板上,实时验 证程序的正确性和稳定性。为了能有效地利用 Matlab Coder 工具,就需要熟悉它生成的 C 代码的文件 内容,文件内容主要包含: ( 1) rtwtype. h 包含了宏定 义数据结构; ( 2) * . c 包含了算子的 C 代码; ( 3) * . h 包 含了算子的头文件命名和引用; ( 4) * initialize. c,* initialize. h 等。以 Sobel 的例子给出如图 7 所示。
图 6 Matlab 函数与 MEX 函数的边缘检测图对比
1. 3 代码生成
通过前面 两 个 阶 段 的 代 码 迭 代 调 试,使 用 命 令 “Codegen-Config-report* . Config( ‘lib’) * ”生成最终 的 C 代码和报告,生成了静态库* . C 文件,它符合 C89 / C90 的 ANSI 代码标准,具有很高的可读性和可 移植性。
收稿日期: 2012-10-26 作者简介: 廖灿灿( 1986-) ,男,贵州六盘水人,暨南大学信息科学技术学院硕士研究生,研究方向: 信号与信息处理; 张树群 ( 1964-) ,女,广东广州人,副教授,研究方向: 嵌入式系统和信号处理; 雷兆宜,男,广东人,高级实验师,研究方向: 计算机应 用与嵌入式系统技术应用。
图 1 代码生成、移植环境和过程图
1 Matlab Coder 代码生成
目标系统软件代码生成主要包括 3 个过程: Matlab 代码编写与测试、代码生成和平台移植。Matlab Coder 工 具 可 以 将 Matlab 函 数 直 接 生 成 C 代 码。 Matlab Coder 代码生成工具生成 C 代码工作流程如 图 2 所示,图 2 中 Y 表示通过验证,N 表示未通过验 证。
3 实验结果
本文选择 Matlab 中 4 种经典图像处理算法: Sobel 算子、Prewitt 算子、Roberts 算子、Canny 算子的图 像边缘检测[15]作为实例,分别对比它们在 Matlab 环 境和在嵌入式 Linux 环境下调用 C 代码静态库的图 像处理效果。如图 9 所示为对比结果,共 4 组图对应 4 种算子的图像边缘检测结果,每组对照图中,左边
LIAO Can-can,ZHANG Shu-qun,LEI Zhao-yi
( College of Information Science and Technology,Jinan University,Guangzhou 510632,China)
Abstract: The function library of Matlab provides a bridge to realize the design-scheme in embedded systems and helps to accelerate software development. In the present work,by using Matlab Coder,Matlab functions are converted to C code in static library files,then the generated C code are successfully transplanted and run in the embedded ARM board by using a cross-compiler in Linux. The experimental results show that,it running well in the target systems by using this generating software code,its ease of maintenance and execution efficiency are better than manually written code,realize the rapid generation of embedded system software code. Key words: Matlab Coder; embedded system; S3C2440; ARM9