文件

传统功能中的复杂信号

此示例显示如何使用传统代码工具使用复杂信号集成传统C功能。

Legacy Code Tool允许您:

  • 提供遗留功能规范,

  • 生成在仿真期间使用的C-MEX S函数,以调用遗留代码,以及

  • 编译并构建生成的S函数进行仿真。

提供遗留功能规范

遗留代码工具提供的函数以特定的数据结构或结构数组作为参数。通过使用initialize作为第一个输入调用函数legacy_code()来初始化数据结构。在初始化结构之后,您必须将其属性赋给与集成的遗留代码相对应的值。有关属性的详细帮助,请致电Legacy_code('help')。在此示例中调用遗留功能的原型是:

void cplx_gain(creal_t *输入,creal_t * gain,creal_t *输出);

其中creal_T是一个双精度数的复表示。遗留的源代码可以在这些文件中找到cplxgain.h.,cplxgain.c.

% sldemo_sfun_gain_scalardef = legacy_code (“初始化”);def.sfunctionname =.'sldemo_sfun_cplx_gain';def.OutputFcnSpec ='void cplx_gain(complex u1[1], complex p1[1], complex y1[1])';def.headerfiles = {'cplxgain.h'};def.sourcefiles = {'cplxgain.c'};def.IncPaths = {'sldemo_lct_src'};def.SrcPaths = {'sldemo_lct_src'};

生成和编译用于仿真的s函数

使用第一个输入设置为“generate_for_sim”来调用函数legacy_code(),以便根据输入参数“def”提供的描述自动生成和编译C-MEX S函数。此S函数用于调用仿真中的遗留功能。在文件中找到了S函数的源代码sldemo_sfun_cplx_gain.c.

lefacy_code('generate_for_sim',def);
###开始编译SLDEMO_SFUN_CPLX_GAIN MEX(' -  I / MATHWORKS / DEVEL / BAT / BDOC19B / BUILD / MATLAB / TOOL金宝appBOX / SIMDEMOS / SIMFEatures / SLDEMO_LCT_SRC','-I / TMP / BDOC19B_1305395_48967 / TPF9D7F153','-C'那'-outdir', '/tmp/Bdoc19b_1305395_48967/tp47310dc2_b815_43fb_b953_1941ec1a54a7', '/mathworks/devel/bat/Bdoc19b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src/cplxgain.c') Building with 'gcc'. MEX completed successfully. mex('sldemo_sfun_cplx_gain.c', '-I/mathworks/devel/bat/Bdoc19b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc19b_1305395_48967/tpf9d7f153', '/tmp/Bdoc19b_1305395_48967/tp47310dc2_b815_43fb_b953_1941ec1a54a7/cplxgain.o') Building with 'gcc'. MEX completed successfully. ### Finish Compiling sldemo_sfun_cplx_gain ### Exit

生成RTWMAKECFG.M文件以进行代码生成

在创建TLC块文件之后,可以将第一个输入设置为“RTWMakecfg_generate”的函数legacy_code()再次调用,以便生成RTWMakecfg.m文件以通过Simulink®Coder™支持代码生成。金宝app金宝app生成RTWMakecfg.m文件,如果S函数的所需源和标头文件不在同一目录中,则要在代码生成期间生成的Makefile中添加这些依赖项。

注意:仅当您将在加速模式下模拟模型时才完成此步骤。

lefacy_code('rtwmakecfg_generate',def);

生成屏蔽的S函数块,用于调用生成的S函数

在编译了C-MEX s -函数源之后,可以再次调用函数legacy_code(),将第一个输入设置为'slblock_generate',以生成一个被配置为调用该s -函数的屏蔽s -函数块。该块被放置在新模型中,可以复制到现有模型中。

% legacy_code (slblock_generate, def);

演示与遗留代码生成的集成

该模型sldemo_lct_cplxgain.显示与遗留代码的集成。子系统Complex_Gain用作通过生成S函数呼叫传统C函数的线束。

如果isempty (find_system (“SearchDepth”,0,'姓名''sldemo_lct_cplxgain'))Open_System('sldemo_lct_cplxgain')Open_System('sldemo_lct_cplxgain / complex_gain')sim('sldemo_lct_cplxgain');结尾