main content

从 matlab 代码生成 c/c 代码。 -凯发k8网页登录

matlab 代码生成 c/c 代码。

说明

示例

codegen options function -args {func_inputs} 使用带 func_inputs 类型输入的 matlab® 函数生成 c 或 c 代码,并编译生成的代码。使用 options 参数指定代码生成配置对象等设置。配置对象控制编译类型(mex、lib、dll 或 exe)和代码生成参数。有关创建和使用配置对象的信息,请参阅、,以及配置对象参考页:、 和 。

如果函数没有输入,请省略函数特定的 -args {func_inputs} 选项。

codegen options files function -args {func_inputs} 从使用在外部 files 中指定的自定义源代码的 matlab 函数生成 c/c 代码。有关详细信息,请参阅和。

codegen options files function -args {func_inputs} -nargout number_args 生成 c/c 代码,并控制从 matlab 函数生成的 c/c 函数代码的输出参数个数。文件和选项参数是可选的。如果并不需要 matlab 函数的所有输出,则请使用 -nargout 选项。有关详细信息,请参阅。

codegen options files function1 -args {func1_inputs} ... functionn -args {funcn_inputs} 从多个 matlab 函数生成 c/c 代码。请在每个函数名称的后面分别写入函数的输入参数。还可以对每个函数使用 -nargout 选项。从其中生成代码的函数称为入口函数。有关详细信息,请参阅。

示例

codegen options files function -args {func_inputs1} ... -args {func_inputsn} 从 matlab 函数生成多签名 mex 函数。为同一个入口函数的输入参数提供多个 -args 设定。使用 options 参数指定代码生成配置对象和参数等设置。您必须将编译类型指定为 mex 函数。不支持其他编译类型(libdllexe)。有关详细信息,请参阅。

codegen projectmatlab coder™ 工程文件(例如 test.prj)生成代码。

示例

编写一个 matlab 函数 mcadd,它返回两个值的和。

function y = mcadd(u,v) %#codegen
% the directive %#codegen indicates that the function
% is intended for code generation
y = u   v;
end

在 matlab 命令行中,运行以下 codegen 命令。

codegen mcadd -args {[0 0 0 0],0}

代码生成器在当前工作文件夹中生成 mex 文件 mcadd_mex

  • 如果您没有指定编译目标,则代码生成默认为 mex 代码生成。默认情况下,代码生成器将生成的 mex 函数命名为 mcadd_mex

  • 要允许生成具有特定类型的 mex 或 c/c 代码,您必须指定 matlab 入口函数的所有输入变量的属性(类、大小和复/实性)。在此示例中,需要使用 -args 选项为输入提供示例值。代码生成器使用这些示例值来确定第一个输入是由 double 类型的实数值组成的 1×4 数组,第二个输入是 double 类型的实数标量。

    这些示例输入的实际值与代码生成无关。任何具有相同属性(类、大小和复/实性)的其他值对组都会生成相同的代码。请参阅。

在命令行中,调用生成的 mex 函数 mcadd_mex。确保您传递给 mcadd_mex 的值的类、大小和复/实性与您在 codegen 命令中指定的输入属性相匹配。

mcadd_mex([1 1 1 1],5)
ans =
     6     6     6     6

运行具有这些输入值的 matlab 函数 mcadd 会产生相同的输出。此测试用例验证 mcaddmcadd_mex 具有相同的行为。

编写一个 matlab 函数 myadd,它返回两个值的和。

function y = myadd(u,v) %#codegen
y = u   v;
end

在 matlab 命令行中,运行以下 codegen 命令。

codegen -config:mex myadd.m -args {1,2} -args {int8(2),int8(3)} -args {1:10,1:10} -report
代码生成器为 codegen 命令中指定的多个签名创建一个 mex 函数 myadd_mex。有关详细信息,请参阅。

编写一个 matlab 函数 mcadd,它返回两个值的和。

function y = mcadd(u,v) %#codegen
y = u   v;

使用 -config:lib 选项在自定义文件夹 mcaddlib 中生成 c 库文件。将第一个输入类型指定为由无符号 16 位整数组成的 1×4 向量。将第二个输入指定为双精度标量。

codegen -d mcaddlib -config:lib  mcadd -args {zeros(1,4,'uint16'),0}

编写一个 matlab 函数 coderrand,该函数在开区间 (0,1) 上基于标准均匀分布生成一个随机标量值。

function r = coderrand() %#codegen
r = rand();

编写一个 c 主函数 c:\myfiles\main.c,它调用 coderrand

/*
** main.c
*/
#include 
#include 
#include "coderrand.h"
#include "coderrand_initialize.h"
#include "coderrand_terminate.h"
int main()
{
    coderrand_initialize();
    printf("coderrand=%g\n", coderrand());
    coderrand_terminate();
    
    puts("press enter to quit:");
    getchar();
    return 0;
}

将代码生成参数配置为包含 c 主函数,然后生成 c 可执行文件。

cfg = coder.config('exe')
cfg.customsource = 'main.c'
cfg.custominclude = 'c:\myfiles'
codegen -config cfg coderrand

codegen 在当前文件夹中生成 c 可执行文件 coderrand.exe,在默认文件夹 codegen\exe\coderrand 中生成支持文件。

此示例说明如何在配置对象 coder.codeconfig 中将主函数指定为参数。您也可以在命令行中单独指定包含 main() 的文件。您可以使用源、对象或库文件。

有关更详细的示例,请参阅。

编写一个接受单个输入的 matlab 函数。

function y = halfvalue(vector) %codegen
    y = 0.5 * vector;
end

使用 coder.typeof 将输入类型定义为由双精度值组成的行向量,其最大大小为 1×16,第二个维度具有可变大小。

vectortype = coder.typeof(1, [1 16], [false true]);

生成 c 静态库。

codegen -config:lib halfvalue -args {vectortype}

编写一个 matlab 函数 use_globals,该函数接受一个输入参数 u 并使用两个全局变量 arb

function y = use_globals(u)
%#codegen
% turn off inlining to make 
% generated code easier to read
coder.inline('never');
global ar;
global b;
ar(1) = u(1)   b(1);
y = ar * 2;

生成 mex 函数。默认情况下,codegen 在当前文件夹中生成名为 use_globals_mex 的 mex 函数。使用 -globals 选项在命令行指定全局变量的属性。通过使用 -args 选项,指定输入 u 为双精度实数标量。

codegen -globals {'ar', ones(4), 'b', [1 2 3 4]} use_globals -args {0}

您也可以在 matlab 工作区中初始化全局数据。在 matlab 提示符下,输入:

global ar b;
ar = ones(4);
b = [1 2 3];

生成 mex 函数。

codegen use_globals -args {0}

编写一个函数 displaystate,它使用枚举数据根据设备的状态来激活 led 显示。如果绿色 led 显示亮起,则指示 on 状态。如果红色 led 显示亮起,则指示 off 状态。

function led = displaystate(state)
%#codegen
if state == sysmode.on
    led = ledcolor.green;
else
    led = ledcolor.red;
end

定义一个 ledcolor 枚举。在 matlab 路径上,创建一个名为 'ledcolor' 的文件,其中包含:

classdef ledcolor < int32
    enumeration
        green(1),
        red(2),
    end
end

使用现有 matlab 枚举中的值创建一个 coder.enumtype 对象。

定义一个 sysmode 枚举。在 matlab 路径上,创建一个名为 'sysmode' 的文件,其中包含:

classdef sysmode < int32
  enumeration
    off(0)
    on(1)
  end
end

从这个枚举创建一个 coder.enumtype 对象。

t = coder.typeof(sysmode.off);

displaystate 生成一个 mex 函数。

codegen  displaystate -args {t}

编写一个 matlab 语言函数 mcsqrtfi,用于计算定点输入的平方根。

function y = mcsqrtfi(x) %#codegen
y = sqrt(x);

为定点输入 x 定义 numerictypefimath 属性,并使用 -config:lib 选项为 mcsqrtfi 生成 c 库代码。

t = numerictype('wordlength',32, ...
                'fractionlength',23, ...
                'signed',true)
f = fimath('summode','specifyprecision', ...
           'sumwordlength',32, ...
           'sumfractionlength',23, ...
           'productmode','specifyprecision', ...
           'productwordlength',32, ...
           'productfractionlength',23)
% define a fixed-point variable with these
%  numerictype and fimath properties
myfiprops = {fi(4.0,t,f)}
codegen -config:lib mcsqrtfi -args myfiprops
codegen 在默认文件夹 codegen/lib/mcsqrtfi 中生成 c 库和支持文件。

您可以为 matlab 代码生成接受半精度输入的代码。有关详细信息,请参阅 。

编写一个 matlab 函数 foo,它返回两个值的和。

function y = foo(a,b)
y = a   b;
end

在 matlab 命令行中,运行以下 codegen 命令。

codegen -lang:c   -config:lib foo -args {half(0),half(0)} -report
code generation successful: view report

代码生成器在 work\codegen\lib\foo 中生成静态 c 库,其中 work 是当前工作文件夹。

要查看代码生成报告,请点击 view report。在报告查看器中,检查文件 foo.cpp 中生成的 c 源代码。

real16_t foo(real16_t a, real16_t b)
{
  return a   b;
}

生成的函数 foo 接受并返回半精度值。c 半精度类型 real16_t 在生成的头文件 rtwhalf.h 中定义。检查 real16_t 类的 运算符的定义。

此示例中生成的代码将半精度输入转换为单精度,以单精度执行加法运算,并将结果转换回半精度。

此示例要求具有 fixed-point designer™。

编写一个 matlab 函数 myadd,它返回两个值的和。

function y = myadd(u,v) %#codegen
    y = u   v;
end

编写一个 matlab 函数 myadd_test 以测试 myadd

function y = myadd_test %#codegen
    y = myadd(10,20);
end

使用默认设置创建一个 coder.fixptconfig 对象 fixptcfg

fixptcfg = coder.config('fixpt');

设置测试平台名称。

fixptcfg.testbenchname = 'myadd_test';

创建一个代码生成配置对象来生成独立的 c 静态库。

cfg = coder.config('lib');

使用 -float2fixed 选项生成代码。

codegen -float2fixed fixptcfg -config cfg myadd

定义一个 matlab 函数 myadd,它返回两个值的和。

function y = myadd(u,v) %#codegen
y = u   v;
end

创建一个用于生成静态库的 coder.codeconfig 对象。将 targetlang 设置为 'c '

cfg = coder.config('lib');
cfg.targetlang = 'c  ';

在 matlab 命令行中,创建并运行 codegen 命令。将 myadd 指定为入口函数。将 myadd 的输入指定为维度无界的 double 类型可变大小矩阵。将 cfg 指定为代码配置对象。包括 -toproject 选项,以将 codegen 命令转换为名称为 myadd_project.prj 的等效 matlab coder 工程文件。

codegen -config cfg myadd -args {coder.typeof(1,[inf,inf]),coder.typeof(1,[inf,inf])} -toproject myadd_project.prj
project file 'myadd_project.prj' was successfully created.
open project

代码生成器在当前工作文件夹中创建工程文件 myadd_project.prj。使用 -toproject 选项运行 codegen 不会生成代码。它只创建工程文件。

使用另一个 codegen 命令,从 myadd_project.prj 生成代码。

codegen myadd_project.prj

代码生成器在 work\codegen\lib\myadd 文件夹中生成 c 静态库函数 myadd,其中 work 是您的当前工作目录。

输入参数

在使用 codegen 命令时,单个命令行选项的优先级高于配置对象指定的选项。如果各命令行选项之间发生冲突,则最右边的选项优先。选项和其他语法元素的顺序是可互换的。

指定为以下一个或多个值:

-c

生成 c/c 代码,但不调用 make 命令。

-config:dll

使用默认配置参数生成动态 c/c 库。

-config:exe

使用默认配置参数生成静态 c/c 可执行文件。

-config:lib

使用默认配置参数生成静态 c/c 库。

-config:mex

使用默认配置参数生成 mex 函数。

-config:single

使用默认配置参数生成单精度 matlab 代码。

需要 fixed-point designer。

-config config_object

指定包含代码生成参数的配置对象。config_object 是以下配置对象之一:

  • coder.codeconfig - 用于生成独立 c/c 库或可执行文件的参数(如果 embedded coder® 不可用)。

    % configuration object for a dynamic linked library
    cfg = coder.config('dll')
    % configuration object for an executable
    cfg = coder.config('exe')
    % configuration object for a static standalone library
    cfg = coder.config('lib')
    
  • coder.embeddedcodeconfig - 用于生成独立 c/c 库或可执行文件的参数(如果 embedded coder 可用)。

    % configuration object for a dynamic linked library
    ec_cfg = coder.config('dll')
    % configuration object for an executable
    ec_cfg = coder.config('exe')
    % configuration object for a static standalone library
    ec_cfg = coder.config('lib')
    
  • coder.mexcodeconfig - 用于生成 mex 代码的参数。

    mex_cfg = coder.config
    % or 
    mex_cfg = coder.config('mex')

有关详细信息,请参阅。

-d out_folder

将生成的文件存储在 out_folder 指定的绝对或相对路径中。out_folder 不能包含:

  • 空格,因为在某些操作系统配置中,空格可能导致代码生成失败。

  • 非 7 位 ascii 字符,如日语字符。

如果 out_folder 指定的文件夹不存在,codegen 会创建它。

如果不指定文件夹位置,codegen 会在默认文件夹中生成文件:

codegen/target/fcn_name. 

target 可以是:

  • mex(对于 mex 函数)

  • exe(对于可嵌入的 c/c 可执行文件)

  • lib(对于可嵌入的 c/c 库)

  • dll(对于 c/c 动态库)

fcn_name 是命令行中第一个 matlab 函数(按字母顺序排列)的名称。

该函数不支持在文件夹名称中使用以下字符:星号 (*)、问号 (?)、美元符号 ($) 和镑符号 (#)。

注意

每次 codegen 为相同的代码生成相同类型的输出时,都会删除上一次编译生成的文件。如果要保留以前的某次编译生成的文件,请在开始新的编译之前将这些文件复制到其他位置。

-double2single double2single_cfg_name

使用 coder.singleconfig 对象 double2single_cfg_name 指定的设置生成单精度 matlab 代码。codegen 在文件夹 codegen/fcn_name/single 中生成文件。

fcn_name 是入口函数的名称。

当与 -config 选项结合使用时,还可生成单精度 c/c 代码。codegen 在文件夹 codegen/target/folder_name 中生成单精度文件。

target 可以是:

  • mex(对于 mex 函数)

  • exe(对于可嵌入的 c/c 可执行文件)

  • lib(对于可嵌入的 c/c 库)

  • dll(对于 c/c 动态库)

folder_namefcn_namesinglesuffix 的串联。

singlesuffixcoder.singleconfig 属性 outputfilenamesuffix 指定的后缀。此文件夹中的单精度文件也有此后缀。

有关详细信息,请参阅。您必须有 fixed-point designer 才能使用此选项。

-float2fixed float2fixed_cfg_name

当与 -config 选项结合使用时,将使用浮点到定点转换配置对象 float2fixed_cfg_name 指定的设置生成定点 c/c 代码。

codegen 在文件夹 codegen/target/fcn_name_fixpt 中生成文件。target 可以是:

  • mex(对于 mex 函数)

  • exe(对于可嵌入的 c/c 可执行文件)

  • lib(对于可嵌入的 c/c 库)

  • dll(对于 c/c 动态库)

fcn_name 是入口函数的名称。

如果不使用 -config 选项,则使用浮点到定点转换配置对象 float2fixed_cfg_name 指定的设置生成定点 matlab 代码。codegen 在文件夹 codegen/fcn_name/fixpt 中生成文件。

您必须将 testbenchname 属性设置为 float2fixed_cfg_name。例如:

fixptcfg.testbenchname = 'myadd_test';
此命令指定 myadd_test 是浮点到定点配置对象 fixptcfg 的测试文件。

有关详细信息,请参阅。您必须有 fixed-point designer 才能使用此选项。

-g

指定是否对 c 编译器使用调试选项。如果启用调试模式,c 编译器会禁用一些优化。编译速度会更快,但执行速度会变慢。

-globals global_values

在 matlab 文件中指定全局变量的名称和初始值。

global_values 是全局变量名称和初始值组成的元胞数组。global_values 的格式是:

{g1, init1, g2, init2, ..., gn, initn}

gn 是指定为字符向量的全局变量的名称。initn 是初始值。例如:

-globals {'g', 5}

也可以使用以下格式:

-globals {global_var, {type, initial_value}}

type 是类型对象。要创建类型对象,请使用 coder.typeof。对于全局元胞数组变量,必须使用此格式。

在使用 codegen 生成代码之前,需要初始化全局变量。如果您没有使用 -globals 选项为全局变量提供初始值,codegen 会检查 matlab 全局工作区中的变量。如果不提供初始值,codegen 会产生错误。

matlab coder 和 matlab 各有自己的全局数据副本。为了保持一致性,只要两者有交互,就请同步其全局数据。如果不同步数据,其全局变量可能会不同。

要为全局变量指定常量值,请使用 coder.constant。例如:

-globals {'g', coder.constant(v)}
指定 g 为具有常量值 v 的全局变量。

有关详细信息,请参阅。

-i include_path

include_path 添加到代码生成路径的开头。当 codegen 搜索 matlab 函数和自定义 c/c 文件时,它首先搜索代码生成路径。它不会搜索代码生成路径上的类。类必须位于 matlab 搜索路径上。有关详细信息,请参阅。

如果路径包含非 7 位 ascii 字符(如日语字符),则 codegen 可能在此路径上找不到文件。

如果您的 include_path 包含的路径含有空格,请用双引号将每个实例引起来,例如:

'c:\project "c:\custom files"'
-jit

使用即时 (jit) 编译来生成 mex 函数。jit 编译可以加速 mex 函数的生成。此选项仅适用于 mex 函数生成。此选项与某些代码生成功能或选项不兼容,例如自定义代码或使用 openmp 库。

-lang:c

将生成代码中要使用的语言指定为 c。

如果没有指定任何目标语言,代码生成器将生成 c 代码。

-lang:c

将生成代码中要使用的语言指定为 c 。

-launchreport

生成并打开一个代码生成报告。如果未指定此选项,则仅当出现错误或警告消息或者您指定了 -report 选项时,codegen 才会生成报告。

-o output_file_name

使用基本名称 output_file_name 和以下扩展名之一生成 mex 函数、c/c 库或 c/c 可执行文件:

  • .a.lib(适用于 c/c 静态库)

  • .exe 或无扩展名(适用于 c/c 可执行文件)

  • .dll(适用于 microsoft® windows® 系统上的 c/c 动态库)

  • .so(适用于 linux® 系统上的 c/c 动态库)

  • .dylib(适用于 mac 系统上的 c/c 动态库)

  • 生成的 mex 函数的与平台相关的扩展名

output_file_name 可以是文件名,也可以包含现有路径。output_file_name 不能包含空格,因为在某些操作系统配置中空格可能导致代码生成失败。

对于 mex 函数,output_file_name 必须为有效的 matlab 函数名称。

如果没有为库和可执行文件指定输出文件名,则基本名称是 fcn_1fcn_1 是命令行中指定的第一个 matlab 函数的名称。对于 mex 函数,基本名称是 fcn_1_mex。您可以运行原始 matlab 函数和 mex 函数,并比较结果。

-o optimization_option

根据 optimization_option 的值优化生成的代码:

  • enable:inline - 启用函数内联。

  • disable:inline - 禁用函数内联。要了解有关函数内联的详细信息,请参阅。

  • enable:openmp - 使用 openmp 库(如果可用)。使用 codegenparfor 循环生成的 openmp 库、mex 函数或 c/c 代码可以在多个线程上运行。

  • disable:openmp - 禁用 openmp 库。禁用 openmp 后,codegenparfor 循环视为 for 循环,并生成在单线程上运行的 mex 函数或 c/c 代码。请参阅。

在命令行上为每次优化指定一次 -o

如果没有指定,则 codegen 使用内联和 openmp 进行优化。

-package zip_file_name

将生成的独立代码及其依存关系打包到名为 zip_file_name 的压缩 zip 文件中。然后,您可以使用该 zip 文件以转移到另一个开发环境中进行解包并重新编译代码文件。

函数也提供此打包功能。

-preservearraydims

生成使用 n 维索引的代码。有关详细信息,请参阅。

-profile

使用 matlab 探查器启用对生成的 mex 函数的探查。有关详细信息,请参阅使用 matlab 探查器探查 mex 函数

-report

生成代码生成报告。如果未指定此选项,则仅当出现错误或警告消息或者您指定了 -launchreport 选项时,codegen 才会生成报告。

如果您有 embedded coder,则此选项还支持生成代码替换报告。

-reportinfo info

将有关代码生成的信息导出到 matlab 基础工作区的变量 info 中。请参阅。

-rowmajor

生成使用行优先数组布局的代码。默认为列优先布局。有关详细信息,请参阅。

-silent

如果代码生成成功且没有警告,则隐藏所有消息,包括生成报告时。

将显示警告和错误消息。

-singlec

生成单精度 c/c 代码。有关详细信息,请参阅。

您必须有 fixed-point designer 才能使用此选项。

-std:c89/c90

为生成的代码使用 c89/90 (ansi) 语言标准。

-std:c99

为生成的代码使用 c99 (iso) 语言标准。

-std:c 03

为生成的代码使用 c 03 (iso) 语言标准。仅在生成 c 代码时才能使用此库。

-std:c 11

为生成的代码使用 c 11 (iso) 语言标准。仅在生成 c 代码时才能使用此库。

-test test_file

运行 test_file,将调用原始 matlab 函数替换为调用 mex 函数。使用此选项等效于运行 coder.runtest

仅当生成 mex 函数或使用将 verificationmode 设置为 'sil''pil' 的配置对象时,才支持此选项。创建具有 verificationmode 参数的配置对象需要 embedded coder 产品。

-toproject project_file_name

codegen 命令转换为名为 project_file_name 的等效 matlab coder 工程文件。然后,您可以使用另一个 codegen 命令或 matlab coder 从工程文件中生成代码。

您还可以使用 -toproject 选项将不完整的 codegen 命令转换为工程文件。例如,要创建仅包含配置对象 cfg 中存储的代码生成参数的工程文件 myprojecttemplate.prj,请运行以下命令:

codegen -config cfg -toproject myprojecttemplate.prj
在本例中,myprojecttemplate.prj 不包含入口函数或输入类型的设定。因此,您无法从这个工程文件生成代码。您可以在 matlab coder 中打开 myprojecttemplate.prj,并将其作为模板来创建可用于生成代码的完整工程文件。

使用 -toproject project_file_name 选项运行 codegen 不会生成代码。它只创建工程文件。

请参阅。

-v

启用详细模式以显示代码生成状态和目标编译日志消息。

-?

显示 codegen 命令的帮助。

指定为当前工作文件夹中或路径上存在的函数。如果 matlab 文件位于包含非 7 位 ascii 字符(如日语字符)的路径上,codegen 命令可能找不到该文件。

如果您正在使用 lcc 编译器,请不要将入口函数命名为 main

示例: codegen myaddfunction

定义前面的 matlab 函数输入的大小、类和复/实性的示例值。元胞数组中输入的位置必须对应于 matlab 函数定义中输入参数的位置。您也可以提供 coder.type 对象,而不是示例值。要创建 coder.type 对象,请使用 coder.typeof

要生成一个函数,且该函数的输入参数个数少于函数定义的参数个数,请省略不需要的参数示例值。

有关详细信息,请参阅。

示例: codegen foo -args {1}

示例: codegen foo2 -args {1, ones(3,5)}

示例: codegen foo3 -args {1, ones(3,5), coder.typeof("hello")}

要包含在生成代码中的、以空格分隔的自定义文件列表。选项、外部文件和函数设定的顺序可以互换。您可以包括以下类型的文件:

  • c 文件 (.c)

  • c 文件 (.cpp)

  • 头文件 (.h)

  • 目标文件(.o.obj

  • 库(.a.so.dylib.lib

  • 模板联编文件 (.tmf)

    注意

    在以后的版本中将删除对模板联编文件 (tmf) 的支持。请改用工具链方法来编译生成的代码。

如果这些文件位于包含非 7 位 ascii 字符(如日语字符)的路径上,codegen 命令可能找不到这些文件。

示例: codegen foo mylib.lib

为前面的 matlab 函数生成的 c/c 入口函数中的输出参数个数。代码生成器按照输出参数在 matlab 函数定义中出现的顺序生成指定数量的输出参数。

示例: codegen mymlfnwiththreeouts -nargout 2

matlab coder 创建的工程文件。代码生成器使用该工程文件来设置入口函数、输入类型定义和其他选项。要打开 app 并创建或修改工程文件,请使用 函数。

示例: codegen foo.prj

限制

  • 您不能为 matlab 脚本生成代码。请将脚本重写为函数来生成代码。

  • 不支持在当前文件夹是私有文件夹或 @ 文件夹时生成代码,因为这些文件夹在 matlab 中有特殊含义。您可以生成代码来调用 @ 文件夹中的方法和私有文件夹中的函数。

提示

  • 默认情况下,代码是在文件夹 codegen/target/function 中生成的。mex 函数和可执行文件被复制到当前工作文件夹。

  • 为了简化代码生成过程,您可以在单独的脚本中编写代码生成命令。您在该脚本中定义您的函数输入类型和代码生成选项。要生成代码,请调用该脚本。

  • 每次 codegen 为相同的代码或工程生成相同类型的输出时,都会删除上一次编译生成的文件。如果要保留以前的某次编译生成的文件,请在开始新的编译之前将这些文件复制到其他位置。

  • 使用 函数打开 matlab coder,并创建一个 matlab coder 工程。该 app 提供了用户界面,便于您添加 matlab 文件、定义输入参数和指定编译参数。

  • 您可以使用函数语法调用 codegen。将 codegen 参数指定为字符向量或字符串标量。例如:

    codegen('myfunction','-args',{2 3},'-report')
    
  • 要提供字符串标量作为输入或将 codegen 参数指定为字符串标量,请使用函数语法。例如:

    codegen('myfunction','-args',"mystring",'-report')
    codegen("myfunction","-args","mystring","-report")
    

    codegen 的命令形式提供字符串标量输入可能会产生意外的结果。请参阅。

  • 要以编程方式调用 codegen,请使用函数语法。例如:

    a = {'myfunction','-args',{2 3}};
    codegen(a{:})
    

版本历史记录

在 r2011a 中推出

另请参阅

| | (fixed-point designer) | (fixed-point designer) | | (fixed-point designer) | | | | | |

主题

    网站地图