主要内容

使用创建自定义功能Matlab功能

该示例展示了如何自定义使用Matlab功能块来计算一个向量的平均值和标准偏差值。

打开模型

该模型call_stats_block1包含一个空的matlab函数块和您需要的块。打开模型开始。

程序的Matlab功能

程序块计算的平均值和标准偏差的向量值:

  1. 打开MATLAB函数块编辑器,双击Matlab功能块。出现默认函数MATLAB函数块编辑器只有一个输入和输出参数。

    这张图片显示了从call_stats_block1模型中打开后的MATLAB函数块编辑器。它包括一个默认函数。

  2. 通过编辑函数声明语句来定义函数的输入和输出:

    功能[均值,stdev] = stats(vals)

    在这段代码中,定义了一个被调用的函数统计数据,这计算了向量中的值的统计均值和标准偏差瓦尔斯.函数声明语句声明瓦尔斯作为一个争论统计数据功能,有的意思是STDEV.作为返回值。

  3. 在里面MATLAB函数块编辑器,在函数声明语句之后输入行空间并添加以下代码:

    %计算统计均值和标准val中值的偏差%。len =长度(val);意味着= avg (val, len);方差=√总和(vals-avg (vals, len)) ^ 2)) / len);情节(瓦尔斯,' -  +');功能Mean = avg(array,size) /size;
  4. 退出。函数输出的意思是STDEV.对应于阻塞输出端口的意思是STDEV.函数输入瓦尔斯对应于块Inport瓦尔斯

  5. 完成连接Matlab功能块如图所示。

    这显示了在前面的图像中建立的块之间的连接信号。

  6. 保存模型call_stats_block2

构建函数并检查错误

在Simulink中编程模块后金宝app®模型,您可以构建函数并测试错误。建立你的Matlab功能块需要支持的编译器。金宝app马铃薯草®自动选择一个作为默认编译器。如果您的系统上安装了多个matlab支持的编译器,您可以金宝app使用墨西哥人设置命令。看改变默认的编译器

金宝app支持的模拟和代码生成构建的编译器

查看编译器列表,以构建包含的模型Matlab功能块模拟和代码生成。

  1. 导航到金宝app支持和兼容编译器页面并选择您的平台。

  2. 滚动到Simulink Product Family金宝app下的表格。

  3. 检查表中包含的模型Matlab功能模拟块,查找选中列标题的列中的编译器金宝appSimulink For Model references, Accelerator mode, Rapid Accelerator mode, and MATLAB Function blocks

    检查表中包含的模型Matlab功能块并生成代码,查找选中标题列中的编译器金宝app仿真软件编码器™

金宝app支持代码生成的编译器

为包含Matlab功能块,您可以使用Simulink软件支持的任何C编译器进行代码生成金宝app金宝app金宝app仿真软件编码器.以下是编译器列表:

  1. 导航到金宝app支持和兼容编译器Web页面。

  2. 选择您的平台。

  3. 在用于Simulink和相关产品的金宝app表格中,查找选中标题列中的编译器下载188bet金宝搏金宝app仿真软件编码器

定位和修复错误

如果在构建过程中发生错误,则诊断查看器窗口列出错误,并提供指向违规代码的链接。

下面的练习展示了定位和修复错误的方法Matlab功能块。

  1. 在里面统计数据函数,改变局部函数avg到一个虚构的本地功能8月然后再次编译窗口中的以下消息。这诊断查看器窗口用带有阴影的红线显示每个检测到的错误。

  2. 调查标题为未定义的功能或变量'八月'.在所选错误的诊断消息中,单击功能名称后的蓝色链接以显示违规代码。违规线突出显示MATLAB函数块编辑器

  3. 该消息还链接到关于MATLAB函数中变量和表达式的编译时类型信息的报告。此信息可帮助您诊断错误消息并理解类型传播规则。有关报告的更多信息,请参阅MATLAB函数报告.要查看报告,请单击名为启动诊断报告

  4. 通过改变来纠正错误8月avg和重新编译。

定义输入和输出属性

中的每个函数参数Matlab功能块可以具有唯一的数据类型,可以是标量、向量或矩阵。但是,创建函数参数并不直接指定它们的数据类型。默认情况下,函数输入和输出从连接到端口的信号继承它们的数据类型和大小。检查输入和输出数据Matlab功能块,以验证它继承了正确的类型和大小。

  1. 双击Matlab功能堵塞统计数据

  2. 在里面MATLAB函数块编辑器,点击端口和数据管理器.将打开端口和数据管理器,以帮助您定义参数Matlab功能块。

    左边窗格显示参数瓦尔斯以及返回值的意思是STDEV.你已经为Matlab功能块。观察到瓦尔斯被分配A.范围输入,是输入模型金宝app的意思是STDEV.被分配的范围输出,是输出仿真软件金宝app

  3. 在端口和数据管理器的左窗格中,单击行中的任意位置瓦尔斯突出显示它。

    右窗格显示数据属性对话框瓦尔斯.默认情况下,输入和输出参数的类、大小、单位和复杂性都是从附加到每个输入或输出端口的信号中继承的。继承由设置指定尺寸-1、复杂性遗传, 和类型继承:与Simulink相同金宝app

    大小和类型的实际继承值是在模型编译期间设置的,并在编译类型编译规模左窗格的列。

    属性中的输入或输出参数类型类型田野数据例如,“属性”对话框,.属性中的表达式也可以指定输入或输出参数的大小尺寸场地。例如,您可以输入[2 3]尺寸字段来指定瓦尔斯作为一个2×3矩阵。有关更多信息,请参见定义和修改函数参数类型指定MATLAB功能块数据的大小

    笔记

    属性中添加的任何数组的默认第一个索引Matlab功能块功能1,就像在MATLAB中一样。

配置Matlab功能以编程方式块

有两种编程方法来配置aMatlab功能堵塞:

  • 使用一个matlabfunctionConfiguration.对象查询并修改块的属性。您可以使用块路径或调用模型中的模型中的块华东桐柏功能。

  • 使用一个Stateflow。EMChart对象访问块的输入、输出和属性。通过导航statflow的层次结构来识别模型中的块®API对象。

配置块属性

考虑到模型call_stats_block1如上例所述。您可以访问matlabfunctionConfiguration.对象的Matlab功能块,通过调用get_param功能:

config = get_param(“call_stats_block1 / MATLAB函数”...“MATLABFunctionConfiguration”);

要查询或修改配置对象中的属性,请使用对象名称使用点表示法:

myConfig。UpdateMethod
ans =“继承”
config.description ='计算价值矢量的平均值和标准偏差。;

要了解更多关于属性的信息,您可以在Matlab功能配置对象,见matlabfunctionConfiguration.

访问块输入、输出和属性

有关您的更大的程序控制Matlab功能阻止,访问它Stateflow。EMChart对象,调用(州流)函数金宝app仿真软件。根对象处于statflow对象层次结构的顶层。

RT = SFROOT;block =查找(RT,'-ISA''stateflow.emchart'...“路径”“call_stats_block1 / MATLAB函数”);

要查询或修改配置对象中的属性,请使用对象名称使用点表示法:

块。ChartUpdate
ans ='遗传'
块。描述='计算价值矢量的平均值和标准偏差。;

Stateflow。EMChart对象中不可用的其他属性matlabfunctionConfiguration.目的。例如,创建一个桌子在块的输入和输出中,输入:

信息= get ([block.Inputs; block.Outputs) {'姓名''范围''港口'});T =表(信息(:,2),cell2mat(信息(:,3)),...“VariableNames”,{'范围''港口'},...“RowNames”,信息(:,1));t.scope =分类(t.scope)
t = 3×2表范围端口______ ____ vals输入1平均输出1 stdev输出2

有关更多信息,请参见Stateflow API概述(州流)

为代码生成定义局部变量

从MATLAB算法生成代码Matlab功能块,您必须在在操作中使用它们之前显式分配本地变量的类,大小和复杂性,或者将它们返回为输出(参见代码生成的数据定义).在示例函数中统计数据,局部变量len在用于计算平均值和标准差之前定义:

len =长度(val);

一旦你给一个变量赋了属性,除了一些例外情况,你不能在函数体的其他地方重新定义它的类、大小或复杂性重新分配变量属性).

为MATLAB函数块生成代码

  1. 打开call_stats_block2最后保存的模型程序的MATLAB函数块

  2. 双击统计数据块。

  3. 打开金宝app仿真软件编码器应用程序。

  4. C代码选项卡,建造编译并构建示例模型。

    如果你得到一个错误变步求解器,来自配置参数>解算器,将求解器类型改为a固定步骤求解器并重新运行构建。要了解有关固定步骤和可变步骤求解器之间的差异的更多信息,请参阅固定步骤与可变步骤求解器

    如果没有发生错误,则诊断查看器窗口显示一条消息,指示成功。否则,此窗口可帮助您定位错误,如图所示定位和修复错误

也可以看看

|||||||

相关的话题