主要内容

使用MATLAB函数

属性的模型MATLAB函数块来计算值向量的平均值和标准偏差。

创建模型

  1. 创建一个新的Simulin金宝appk®模型,并插入MATLAB函数块从用户定义函数库。

  2. 添加一个常数块,并将其值设置为vector[2 3 4 5].添加两个显示块到模型。

  3. 将模型另存为call_stats_block1

编写MATLAB函数块

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

  1. 双击MATLAB函数块。属性中出现默认函数签名MATLAB函数块编辑器。在定义的函数签名中编写任何代码。

  2. 编辑函数标题行:

    函数[mean,stdev] = stats(vals)

    从这段代码中,定义一个名为统计数据,计算矢量中值的统计平均值和标准偏差瓦尔斯.函数头声明瓦尔斯作为一个参数统计数据函数,的意思是而且方差作为返回值。

  3. MATLAB函数块编辑器,在函数头后输入一个行空间,并添加以下代码:

    以val为单位计算值的统计平均值和标准偏差。Len =长度(vals);Mean = avg(vals,len);方差=√总和(vals-avg (vals, len)) ^ 2)) / len);情节(val”——+ ');函数均值= avg(数组,大小)均值= sum(数组)/大小;
  4. 完成到MATLAB函数如图所示。

  5. 将模型另存为call_stats_block2

构建函数并检查错误

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

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

查看用于构建包含的模型的编译器列表MATLAB函数块模拟和代码生成。

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

  2. 滚动到Simulink产品族下的表格。金宝app

  3. 以检查表中包含的模型MATLAB函数块进行模拟,在列中找到已选中的编译器金宝appSimulink用于模型引用、加速模式、快速加速模式和MATLAB函数块

    要检查表中包含MATLAB函数块和生成代码的模型,请在标题为金宝app仿真软件编码器™

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

为包含的模型生成代码MATLAB函数block,您可以使用Simulink软件支持的任何C编译器进行代码生成金宝app金宝app金宝app仿真软件编码器.对于这些编译器的列表:

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

  2. 选择你的平台。

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

定位和修复错误

如果在构建过程中发生错误,则诊断查看器窗口列出错误,并链接到有问题的代码。

类中的错误定位和修复方法MATLAB函数块。

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

  2. 调查标题为错误未定义函数或变量'aug'.在所选错误的诊断消息中,单击函数名后的蓝色链接以显示出错代码。中突出显示了出现问题的行MATLAB函数块编辑器

  3. 该消息还链接到关于MATLAB函数中变量和表达式的编译时类型信息的报告。此信息可帮助您诊断错误消息并理解类型传播规则。有关报告的详细信息,请参见MATLAB函数报表.要查看报告,请单击一行中突出显示的蓝色链接发射诊断报告

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

定义输入和输出

默认情况下,函数输入和输出从附加到它们端口的信号继承它们的数据类型和大小。类的输入和输出数据MATLAB函数块来验证它继承了正确的类型和大小。

  1. 双击MATLAB函数统计数据

  2. 在MATLAB函数块编辑器中,选择编辑数据.的端口和数据管理器打开以帮助您定义参数MATLAB函数块。

    左窗格显示参数瓦尔斯以及返回值的意思是而且方差你已经为MATLAB函数块。观察到瓦尔斯被分配为范围输入,是英文的缩写来自Simulink的金宝app输入的意思是而且方差被分配到范围输出,是英文的缩写输出到Simulin金宝appk

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

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

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

    类中指定输入或输出参数的类型类型字段数据属性对话框,例如.控件中输入表达式,也可以指定输入或输出参数的大小大小字段。例如,输入3 [2]大小要指定的字段。瓦尔斯作为一个2×3矩阵。看到函数参数类型而且函数参数有关表达式的详细信息,您可以输入表达式的类型和大小。

    请注意

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

配置MATLAB函数块以编程方式

有两种编程方法可以配置MATLAB函数布洛克:

  • 使用一个MATLABFunctionConfiguration对象查询和修改块的属性。可以通过使用块路径或调用方法来识别模型中的块华东桐柏函数。

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

配置块属性

考虑模型call_stats_block1如上例所述。您可以访问MATLABFunctionConfiguration对象的MATLAB函数块中调用get_param功能:

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

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

myConfig。UpdateMethod
ans =“遗传的”
配置。描述=“计算值向量的平均值和标准偏差。”

要详细了解可以在您的MATLAB函数配置对象,请参见MATLABFunctionConfiguration

访问块的输入、输出和属性

以更好的程序控制您的MATLAB函数块,访问其Stateflow。EMChart对象通过调用找到(Stateflow)函数为金宝app仿真软件。根对象的状态流层次结构的顶层。

Rt = sfroot;Block = find(rt,“是”“Stateflow。EMChart”...“路径”“call_stats_block1 / MATLAB函数”);

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

块。ChartUpdate
ans = '遗传性'
块。描述=“计算值向量的平均值和标准偏差。”

Stateflow。EMChart对象中不可用的其他属性MATLABFunctionConfiguration对象。例如,创建一个表格输入块的输入和输出,输入:

info = get([block. input;block.Outputs],{“名字”“范围”“端口”});T = table(info(:,2),cell2mat(info(:,3)),...“VariableNames”, {“范围”“端口”},...“RowNames”信息(:1));T.Scope = category(范畴)
T = 3×2 table范围端口______ ____ vals输入1平均输出1 stdev输出2

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

为代码生成定义局部变量

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

Len =长度(vals);

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

生成MATLAB函数块代码

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

  2. 双击统计数据块。

  3. 选择构建模型>构建编译和构建示例模型。

    如果您得到一个与变步解算器,从配置参数>解算器,将解算器类型更改为a固定步求解并重新运行构建。要了解固定步长和变步长求解器之间的更多区别,请参见固定步与可变步求解器

    如果没有错误,则诊断查看器窗口显示成功消息。否则,此窗口将帮助您定位错误,如中所述定位和修复错误

另请参阅

||||||

相关的话题