主要内容gydF4y2Ba

为全局数据生成代码gydF4y2Ba

工作流gydF4y2Ba

从MATLAB生成C / c++代码gydF4y2Ba®gydF4y2Ba代码使用全局数据:gydF4y2Ba

  1. 代码中声明的变量在全球。gydF4y2Ba

  2. 在使用全局数据之前,定义和初始化它。gydF4y2Ba

    有关更多信息,请参见gydF4y2Ba定义全局数据gydF4y2Ba。gydF4y2Ba

  3. 使用生成代码gydF4y2BaMATLAB编码器™gydF4y2Ba应用程序或使用gydF4y2BacodegengydF4y2Ba。gydF4y2Ba

如果使用全局数据,您还必须指定您想要同步这些数据与MATLAB生成的墨西哥人的功能。有关更多信息,请参见gydF4y2Ba全球数据同步与MATLABgydF4y2Ba。gydF4y2Ba

声明全局变量gydF4y2Ba

当使用全局数据,您必须首先声明全局变量在MATLAB代码中。考虑到gydF4y2Bause_globalsgydF4y2Ba函数使用了两个全局变量gydF4y2Ba基于“增大化现实”技术gydF4y2Ba和gydF4y2BaBgydF4y2Ba:gydF4y2Ba

函数gydF4y2Bay = use_globals (u)gydF4y2Ba% # codegengydF4y2Ba%关掉内联gydF4y2Ba%生成的代码更容易阅读gydF4y2Bacoder.inline (gydF4y2Ba“永远”gydF4y2Ba);gydF4y2Ba%将AR和B声明为全局变量gydF4y2Ba全球gydF4y2Ba基于“增大化现实”技术;gydF4y2Ba全球gydF4y2BaB;AR (1) = u + B (1);y = AR * 2;gydF4y2Ba

定义全局数据gydF4y2Ba

您可以定义全局MATLAB中的数据全局工作空间,在一个gydF4y2BaMATLAB编码器gydF4y2Ba项目,或在命令行。如果你不初始化全局数据的项目或在命令行,gydF4y2BaMATLAB编码器gydF4y2Ba寻找全球工作区MATLAB中的变量。如果这个变量不存在,gydF4y2BaMATLAB编码器gydF4y2Ba生成一个错误。gydF4y2Ba

定义的全局数据gydF4y2BaMATLABgydF4y2Ba全球的工作区gydF4y2Ba

生成一个墨西哥人的功能gydF4y2Bause_globalsgydF4y2Ba描述的功能gydF4y2Ba声明全局变量gydF4y2Ba使用gydF4y2BacodegengydF4y2Ba:gydF4y2Ba

  1. MATLAB的工作区中,定义和初始化全局数据。在MATLAB提示,输入:gydF4y2Ba

    全球gydF4y2Ba基于“增大化现实”技术的B;基于“增大化现实”技术= 1 (4);B = (1 2 3);gydF4y2Ba

  2. 文件生成一个墨西哥人。gydF4y2Ba

    codegengydF4y2Bause_globalsgydF4y2Baarg游戏gydF4y2Ba{0}gydF4y2Ba%使用arg游戏选项来指定输入ugydF4y2Ba%是一个真正的、标量、双gydF4y2Ba%在默认情况下,codegen生成一个墨西哥人功能,gydF4y2Ba% use_globals_mex,在当前文件夹gydF4y2Ba

定义全局数据使用gydF4y2BaMATLABgydF4y2Ba编码器gydF4y2Ba应用程序gydF4y2Ba

  1. 在gydF4y2Ba定义输入类型gydF4y2Ba或者点击页面,自动定义输入类型gydF4y2Ba让我进入直接输入或全球类型gydF4y2Ba。gydF4y2Ba

    入口点的应用程序显示一个表输入。gydF4y2Ba

  2. 添加一个全局变量,单击gydF4y2Ba增加全球gydF4y2Ba。gydF4y2Ba

    默认情况下,应用程序的名称第一个项目中的全局变量gydF4y2BaggydF4y2Ba和随后的全局变量gydF4y2Bag1gydF4y2Ba,gydF4y2Bag2gydF4y2Ba,等等。gydF4y2Ba

  3. 下gydF4y2Ba全局变量gydF4y2Ba为全局变量,输入一个名称。gydF4y2Ba

  4. 单击字段右侧的全局变量名称。指定的类型和全局变量的初始值。看到gydF4y2Ba指定全局变量类型和使用应用程序初始值gydF4y2Ba。gydF4y2Ba

    如果你不指定类型,您必须创建一个具有相同名称的变量在全球工作区。gydF4y2Ba

在命令行中定义全局数据gydF4y2Ba

在命令行中定义全局数据,使用gydF4y2BacodegengydF4y2Ba全局变量gydF4y2Ba选择。例如,编译gydF4y2Bause_globalsgydF4y2Ba描述的功能gydF4y2Ba声明全局变量gydF4y2Ba,指定两个全球输入gydF4y2Ba基于“增大化现实”技术gydF4y2Ba和gydF4y2BaBgydF4y2Ba在命令行中。使用gydF4y2Baarg游戏gydF4y2Ba指定输入的选项gydF4y2BaugydF4y2Ba是一个真正的标量的两倍。默认情况下,codegen生成一个墨西哥人功能,gydF4y2Bause_globals_mexgydF4y2Ba在当前文件夹。gydF4y2Ba

codegengydF4y2Ba全局变量gydF4y2Ba{AR, (4),“B”, (1 2 3)}gydF4y2Bause_globalsgydF4y2Baarg游戏gydF4y2Ba{0}gydF4y2Ba

另外,指定的类型和初始值gydF4y2Ba全局变量gydF4y2Ba国旗使用的格式gydF4y2Ba全局{‘g’,{类型,initial_value}}gydF4y2Ba。对于细胞阵列,您必须使用这种格式。看到gydF4y2Ba在命令行指定全球细胞阵列gydF4y2Ba。gydF4y2Ba

定义适应全局数据。gydF4y2Ba为适应全球数据,提供初始值指定的类型和初始值gydF4y2Ba全局变量gydF4y2Ba国旗使用的格式gydF4y2Ba全局{‘g’,{类型,initial_value}}gydF4y2Ba。例如,指定一个全局变量gydF4y2Bag1gydF4y2Ba一个初始值gydF4y2Ba[1]gydF4y2Ba和上界gydF4y2Ba(2 - 2)gydF4y2Ba,输入:gydF4y2Ba

codegengydF4y2Ba喷火gydF4y2Ba全局变量gydF4y2Ba{{编码器,g1”。typeof (0, 2 [2], 1), [1]}}gydF4y2Ba
语法的详细说明,请参阅gydF4y2Bacoder.typeofgydF4y2Ba。gydF4y2Ba

全球数据同步gydF4y2BaMATLABgydF4y2Ba

为什么全球数据同步?gydF4y2Ba

生成的墨西哥人的功能和MATLAB各有自己的全球数据的副本。让这些副本一致,必须同步全球数据只要两个交互。如果你不同步的数据,他们的全局变量可能是不同的。互动的水平决定何时全球数据同步。有关更多信息,请参见gydF4y2Ba当全球数据同步gydF4y2Ba。gydF4y2Ba

当全球数据是恒定的,你不能同步与MATLAB的全局数据。默认情况下,墨西哥人功能测试的一致性之间的全球价值观和MATLAB编译时常量值在函数入口和外在的函数调用。如果MATLAB值不同于编译时常量的全球价值观,墨西哥人函数以一个错误。对墨西哥人功能测试时控制信息之间的一致性全球价值观和MATLAB编译时常量值,明白了gydF4y2BaMATLAB和持续的全球数据之间的一致性gydF4y2Ba。gydF4y2Ba

当全球数据同步gydF4y2Ba

默认情况下,墨西哥人之间的同步函数的全局数据和MATLAB发生在墨西哥人出入境和外在调用函数。使用这种同步方法最大的墨西哥人之间的一致性和MATLAB函数。gydF4y2Ba

为了提高性能,您可以:gydF4y2Ba

  • 只在墨西哥人选择同步函数入口点和出口点。gydF4y2Ba

  • 禁用同步全球数据不进行交互。gydF4y2Ba

  • 选择是否同步每个外部调用之前和之后。gydF4y2Ba

下面的表总结了全球数据同步选项来使用。学习如何设置这些选项,看看gydF4y2Ba全球数据如何同步gydF4y2Ba。gydF4y2Ba

全球数据同步选项gydF4y2Ba

如果你想gydF4y2Ba 设置全局数据同步模式:gydF4y2Ba 同步之前和之后的外在的电话吗?gydF4y2Ba
最大一致性当所有外部调用修改全局数据。gydF4y2Ba 在MEX-function进入、退出和外部调用gydF4y2Ba(默认)gydF4y2Ba 是的。默认的行为。gydF4y2Ba
最大一致性当大多数外部调用修改全局数据,但一些不。gydF4y2Ba 在MEX-function进入、退出和外部调用gydF4y2Ba(默认)gydF4y2Ba

是的。使用gydF4y2Bacoder.extrinsicgydF4y2Ba同步:了gydF4y2Ba选择关闭同步的外在要求不改变全局数据。gydF4y2Ba

有最大一致性当大多数外部调用不修改全局数据,但很少有这样做的。gydF4y2Ba 在MEX-function出入境gydF4y2Ba

是的。使用gydF4y2Bacoder.extrinsicgydF4y2Ba同步:gydF4y2Ba只选择同步调用修改全局数据。gydF4y2Ba

全球数据同步时最大化性能,没有你的外在要求修改全局数据。gydF4y2Ba 在MEX-function出入境gydF4y2Ba 不。gydF4y2Ba
生成的墨西哥人之间的交流功能。MATLAB和墨西哥人函数全局数据之间没有相互作用。gydF4y2Ba 禁用gydF4y2Ba 不。gydF4y2Ba

全球数据如何同步gydF4y2Ba

控制全球数据同步,设置全局数据同步模式和选择是否同步外在功能。指南使用哪个选项,请参阅gydF4y2Ba当全球数据同步gydF4y2Ba。gydF4y2Ba

你可以控制全球数据同步模式从“项目设置”对话框中,命令行或墨西哥人配置对话框。你控制的同步数据与外在功能使用gydF4y2Bacoder.extrinsicgydF4y2Ba同步:gydF4y2Ba和gydF4y2Ba同步:了gydF4y2Ba选项。gydF4y2Ba

控制全球数据同步模式下使用gydF4y2BaMATLABgydF4y2Ba编码器gydF4y2Ba应用程序gydF4y2Ba

  1. 打开gydF4y2Ba生成gydF4y2Ba对话框,在gydF4y2Ba生成代码gydF4y2Ba页面,点击gydF4y2Ba生成gydF4y2Ba箭头gydF4y2Ba。gydF4y2Ba

  2. 集gydF4y2Ba构建类型gydF4y2Ba来gydF4y2Ba墨西哥人gydF4y2Ba。gydF4y2Ba

  3. 点击gydF4y2Ba更多的设置gydF4y2Ba。gydF4y2Ba

  4. 在gydF4y2Ba内存gydF4y2Ba选项卡,设置gydF4y2Ba全球数据同步模式gydF4y2Ba来gydF4y2Ba在MEX-function出入境gydF4y2Ba或gydF4y2Ba禁用gydF4y2Ba,如适用。gydF4y2Ba

从命令行控制全球数据同步模式gydF4y2Ba

  1. 在MATLAB的工作区中,定义代码生成配置对象。在MATLAB命令行,输入:gydF4y2Ba

    mexcfg = coder.config (gydF4y2Ba墨西哥人的gydF4y2Ba);gydF4y2Ba

  2. 在MATLAB命令行,设置gydF4y2BaGlobalDataSyncMethodgydF4y2Ba财产gydF4y2BaSyncAtEntryAndExitsgydF4y2Ba或gydF4y2BaNoSyncgydF4y2Ba,如适用。例如:gydF4y2Ba

    mexcfg。全球DataSyncMethod =“SyncAtEntryAndExits”gydF4y2Ba;gydF4y2Ba

  3. 编译代码时,使用gydF4y2BamexcfggydF4y2Ba配置对象。例如,要生成一个墨西哥人函数的函数gydF4y2Ba喷火gydF4y2Ba没有输入:gydF4y2Ba

    codegengydF4y2Ba配置gydF4y2BamexcfggydF4y2Ba喷火gydF4y2Ba

非本征函数调用的同步控制。gydF4y2Ba控制MATLAB和墨西哥人之间是否同步函数全局数据发生之前和之后你调用一个外部函数,使用gydF4y2Bacoder.extrinsicgydF4y2Ba同步:gydF4y2Ba和gydF4y2Ba同步:了gydF4y2Ba选项。gydF4y2Ba

默认情况下,全局数据是:gydF4y2Ba

  • 同步之前和之后的每一个外部调用,如果全球数据同步模式gydF4y2Ba在MEX-function进入、退出和外部调用gydF4y2Ba。如果你确信某些外在调用并不改变全局数据,关闭这些调用使用同步gydF4y2Ba同步:了gydF4y2Ba选择。例如,如果函数gydF4y2Bafoo1gydF4y2Ba和gydF4y2Bafoo2gydF4y2Ba不改变全局数据、关闭同步这些函数:gydF4y2Ba

    coder.extrinsic (gydF4y2Ba“同步:掉”gydF4y2Ba,gydF4y2Ba“foo1”gydF4y2Ba,gydF4y2Ba“foo2”gydF4y2Ba);gydF4y2Ba

  • 不同步,如果全球数据同步模式gydF4y2Ba在MEX-function出入境gydF4y2Ba。如果代码有一些外在要求改变全局数据,打开这些调用使用同步gydF4y2Ba同步:gydF4y2Ba选择。例如,如果函数gydF4y2Bafoo1gydF4y2Ba和gydF4y2Bafoo2gydF4y2Ba全球变化数据,打开同步这些函数:gydF4y2Ba

    coder.extrinsic (gydF4y2Ba的同步:gydF4y2Ba,gydF4y2Ba“foo1”gydF4y2Ba,gydF4y2Ba“foo2”gydF4y2Ba);gydF4y2Ba

  • 不同步,如果全球数据同步模式gydF4y2Ba禁用gydF4y2Ba。禁用同步时,你不能使用gydF4y2Ba同步:gydF4y2Ba选择特定的外部调用的同步控制。gydF4y2Ba

明确的全局数据gydF4y2Ba

因为墨西哥人功能和MATLAB各有自己的全球数据的副本,你必须gydF4y2Ba清晰的gydF4y2Ba连续两个副本,以确保墨西哥人运行产生相同的结果。的gydF4y2Ba明确的全球gydF4y2Ba命令删除只有MATLAB工作区中的全局数据的副本。删除两个副本的数据,使用gydF4y2Ba明确的全球gydF4y2Ba和gydF4y2Ba清晰的墨西哥人gydF4y2Ba命令在一起。的gydF4y2Ba清除所有gydF4y2Ba命令还删除两个副本。gydF4y2Ba

定义常数全局数据gydF4y2Ba

如果你知道一个全局变量的值不会改变在运行时,可以减少开销在生成的代码通过指定全局变量有一个常数值。你不能写常数全局变量。gydF4y2Ba

定义常数全局数据使用gydF4y2BaMATLABgydF4y2Ba编码器gydF4y2Ba应用程序gydF4y2Ba

  • 在gydF4y2Ba定义输入类型gydF4y2Ba或者点击页面,自动定义输入类型gydF4y2Ba让我进入直接输入或全球类型gydF4y2Ba。gydF4y2Ba

    入口点的应用程序显示一个表输入。gydF4y2Ba

  1. 添加一个全局变量,单击gydF4y2Ba增加全球gydF4y2Ba。gydF4y2Ba

    默认情况下,应用程序的名称第一个项目中的全局变量gydF4y2BaggydF4y2Ba和随后的全局变量gydF4y2Bag1gydF4y2Ba,gydF4y2Bag2gydF4y2Ba,等等。gydF4y2Ba

  2. 下gydF4y2Ba全局变量gydF4y2Ba为全局变量,输入一个名称。gydF4y2Ba

  3. 单击字段右侧的全局变量名称。gydF4y2Ba

  4. 选择gydF4y2Ba定义常量值gydF4y2Ba。gydF4y2Ba

  5. 在右边的全局变量,输入一个MATLAB表达式。gydF4y2Ba

在命令行定义常数全局数据gydF4y2Ba

指定使用一个全局变量是常数gydF4y2BacodegengydF4y2Ba命令,可以使用gydF4y2Ba全局变量gydF4y2Ba选择与gydF4y2Bacoder.ConstantgydF4y2Ba类。gydF4y2Ba

  1. 定义一个配置对象的代码生成输出类型你想要的。例如,为墨西哥人定义一个配置对象代码生成:gydF4y2Ba

    cfg = coder.config (gydF4y2Ba墨西哥人的gydF4y2Ba);gydF4y2Ba

  2. 使用gydF4y2Bacoder.ConstantgydF4y2Ba指定一个全局变量有一个常数值。例如,下面的代码指定全局变量gydF4y2BaggydF4y2Ba有初始值gydF4y2Ba4gydF4y2Ba和全局变量gydF4y2BagcgydF4y2Ba有恒定值gydF4y2Ba42gydF4y2Ba。gydF4y2Ba

    global_values = {gydF4y2Ba‘g’gydF4y2Ba4gydF4y2Ba“垃圾收集”gydF4y2Bacoder.Constant (42)};gydF4y2Ba
  3. 生成的代码使用gydF4y2Ba全局变量gydF4y2Ba选择。例如,生成的代码gydF4y2BamyfunctiongydF4y2Ba指定单元阵列中定义全局变量gydF4y2Baglobal_valuesgydF4y2Ba。gydF4y2Ba

    codegengydF4y2Ba配置gydF4y2BacfggydF4y2Ba全局变量gydF4y2Baglobal_valuesgydF4y2BamyfunctiongydF4y2Ba

之间的一致性gydF4y2BaMATLABgydF4y2Ba和持续的全球数据gydF4y2Ba

默认情况下,生成的墨西哥人功能验证的值常数MATLAB工作区中的全局数据符合编译时的值在生成的墨西哥人。它的一致性测试函数入口和调用外部函数。如果检测到一个墨西哥人功能不一致,则以一个错误。为一致性控制墨西哥人功能测试时,使用全球同步模式和gydF4y2Bacoder.extrinsicgydF4y2Ba同步选项。gydF4y2Ba

下面的表显示了全球数据同步模式和方式gydF4y2Bacoder.extrinsicgydF4y2Ba同步选项设置决定当一个墨西哥人功能验证之间的一致性和MATLAB编译时常量全局数据值。gydF4y2Ba

全球数据同步模式(项目)gydF4y2Ba GlobalDataSyncMethod(墨西哥人配置对象)gydF4y2Ba 验证常数在墨西哥人全球值函数入口的一致性gydF4y2Ba coder.extrinsicsynchronization option 验证非本征函数调用后持续的全球价值观的一致性gydF4y2Ba

在MEX-function进入、退出和外部调用gydF4y2Ba(默认)gydF4y2Ba

“SyncAlways”gydF4y2Ba

是的gydF4y2Ba

的同步:gydF4y2Ba(默认)gydF4y2Ba

是的gydF4y2Ba

“同步:掉”gydF4y2Ba

没有gydF4y2Ba

在MEX-function出入境gydF4y2Ba

“SyncAtEntryAndExits”gydF4y2Ba

是的gydF4y2Ba

的同步:gydF4y2Ba

是的gydF4y2Ba

“同步:掉”gydF4y2Ba(默认)gydF4y2Ba

没有gydF4y2Ba

禁用gydF4y2Ba

“NoSync”gydF4y2Ba

没有gydF4y2Ba

N /一个gydF4y2Ba

N /一个gydF4y2Ba

持续的全球数据代码生成报告gydF4y2Ba

代码生成的报告提供了以下信息一个常数全局变量:gydF4y2Ba

  • 类型的gydF4y2Ba全球gydF4y2Ba在gydF4y2Ba变量gydF4y2Ba选项卡。gydF4y2Ba

  • 突出显示的变量名gydF4y2Ba函数gydF4y2Ba窗格。gydF4y2Ba

看到gydF4y2Ba视图MATLAB变量gydF4y2Ba。gydF4y2Ba

全局数据限制为生成的代码gydF4y2Ba

  • 全局结构变量不能包含处理对象或稀疏阵列。gydF4y2Ba

  • 你不能申请gydF4y2Bacoder.cstructnamegydF4y2Ba直接一个全局变量。名称的结构类型使用一个全局变量,使用gydF4y2Bacoder.cstructnamegydF4y2Ba创建一个对象类型名称的结构类型。然后,当您运行gydF4y2BacodegengydF4y2Ba,指定全局变量的类型。看到gydF4y2Ba名字的C结构类型使用一个全局结构变量gydF4y2Ba。gydF4y2Ba

另请参阅gydF4y2Ba

相关的话题gydF4y2Ba