该示例展示了如何自定义使用Matlab功能块来计算一个向量的平均值和标准偏差值。
该模型call_stats_block1
包含一个空的matlab函数块和您需要的块。打开模型开始。
程序块计算的平均值和标准偏差的向量值:
打开MATLAB函数块编辑器,双击Matlab功能块。出现默认函数MATLAB函数块编辑器只有一个输入和输出参数。
通过编辑函数声明语句来定义函数的输入和输出:
功能[均值,stdev] = stats(vals)
在这段代码中,定义了一个被调用的函数统计数据
,这计算了向量中的值的统计均值和标准偏差瓦尔斯
.函数声明语句声明瓦尔斯
作为一个争论统计数据
功能,有的意思是
和STDEV.
作为返回值。
在里面MATLAB函数块编辑器,在函数声明语句之后输入行空间并添加以下代码:
%计算统计均值和标准val中值的偏差%。len =长度(val);意味着= avg (val, len);方差=√总和(vals-avg (vals, len)) ^ 2)) / len);情节(瓦尔斯,' - +');功能Mean = avg(array,size) /size;
退出。函数输出的意思是
和STDEV.
对应于阻塞输出端口的意思是和STDEV.函数输入瓦尔斯
对应于块Inport瓦尔斯.
完成连接Matlab功能块如图所示。
保存模型call_stats_block2
.
在Simulink中编程模块后金宝app®模型,您可以构建函数并测试错误。建立你的Matlab功能块需要支持的编译器。金宝app马铃薯草®自动选择一个作为默认编译器。如果您的系统上安装了多个matlab支持的编译器,您可以金宝app使用墨西哥人设置
命令。看改变默认的编译器.
查看编译器列表,以构建包含的模型Matlab功能块模拟和代码生成。
导航到金宝app支持和兼容编译器页面并选择您的平台。
滚动到Simulink Product Family金宝app下的表格。
检查表中包含的模型Matlab功能模拟块,查找选中列标题的列中的编译器金宝appSimulink For Model references, Accelerator mode, Rapid Accelerator mode, and MATLAB Function blocks
.
检查表中包含的模型Matlab功能块并生成代码,查找选中标题列中的编译器金宝app仿真软件编码器™
.
为包含Matlab功能块,您可以使用Simulink软件支持的任何C编译器进行代码生成金宝app金宝app金宝app仿真软件编码器.以下是编译器列表:
导航到金宝app支持和兼容编译器Web页面。
选择您的平台。
在用于Simulink和相关产品的金宝app表格中,查找选中标题列中的编译器下载188bet金宝搏金宝app仿真软件编码器.
如果在构建过程中发生错误,则诊断查看器窗口列出错误,并提供指向违规代码的链接。
下面的练习展示了定位和修复错误的方法Matlab功能块。
在里面统计数据
函数,改变局部函数avg
到一个虚构的本地功能8月
然后再次编译窗口中的以下消息。这诊断查看器窗口用带有阴影的红线显示每个检测到的错误。
调查标题为未定义的功能或变量'八月'
.在所选错误的诊断消息中,单击功能名称后的蓝色链接以显示违规代码。违规线突出显示MATLAB函数块编辑器.
该消息还链接到关于MATLAB函数中变量和表达式的编译时类型信息的报告。此信息可帮助您诊断错误消息并理解类型传播规则。有关报告的更多信息,请参阅MATLAB函数报告.要查看报告,请单击名为启动诊断报告
.
通过改变来纠正错误8月
回avg
和重新编译。
中的每个函数参数Matlab功能块可以具有唯一的数据类型,可以是标量、向量或矩阵。但是,创建函数参数并不直接指定它们的数据类型。默认情况下,函数输入和输出从连接到端口的信号继承它们的数据类型和大小。检查输入和输出数据Matlab功能块,以验证它继承了正确的类型和大小。
双击Matlab功能堵塞统计数据
.
在里面MATLAB函数块编辑器,点击端口和数据管理器.将打开端口和数据管理器,以帮助您定义参数Matlab功能块。
左边窗格显示参数瓦尔斯
以及返回值的意思是
和STDEV.
你已经为Matlab功能块。观察到瓦尔斯
被分配A.范围的输入
,是输入模型金宝app.的意思是
和STDEV.
被分配的范围的输出
,是输出仿真软件金宝app.
在端口和数据管理器的左窗格中,单击行中的任意位置瓦尔斯
突出显示它。
右窗格显示数据属性对话框瓦尔斯
.默认情况下,输入和输出参数的类、大小、单位和复杂性都是从附加到每个输入或输出端口的信号中继承的。继承由设置指定尺寸来-1
、复杂性来遗传
, 和类型来继承:与Simulink相同金宝app
.
大小和类型的实际继承值是在模型编译期间设置的,并在编译类型和编译规模左窗格的列。
属性中的输入或输出参数类型类型田野数据例如,“属性”对话框,双
.属性中的表达式也可以指定输入或输出参数的大小尺寸场地。例如,您可以输入[2 3]
在尺寸字段来指定瓦尔斯
作为一个2×3
矩阵。有关更多信息,请参见定义和修改函数参数类型和指定MATLAB功能块数据的大小.
笔记
属性中添加的任何数组的默认第一个索引Matlab功能块功能1
,就像在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);
一旦你给一个变量赋了属性,除了一些例外情况,你不能在函数体的其他地方重新定义它的类、大小或复杂性重新分配变量属性).
打开call_stats_block2
最后保存的模型程序的MATLAB函数块.
双击统计数据
块。
打开金宝app仿真软件编码器应用程序。
在C代码选项卡,建造编译并构建示例模型。
如果你得到一个错误变步
求解器,来自配置参数>解算器,将求解器类型改为a固定步骤
求解器并重新运行构建。要了解有关固定步骤和可变步骤求解器之间的差异的更多信息,请参阅固定步骤与可变步骤求解器.
如果没有发生错误,则诊断查看器窗口显示一条消息,指示成功。否则,此窗口可帮助您定位错误,如图所示定位和修复错误.
Matlab功能|add_block.
|华东桐柏
|get_param
|桌子
|matlabfunctionConfiguration.
|Stateflow。EMChart
|MATLAB函数块编辑器