概述
创建使用 MATLAB Function 模块的模型
向模型中添加一个 MATLAB Function 模块
1. 创建一个新的 Simulink® 模型,并从 User-Defined Functions 库中为模型添加一个 MATLAB Function 模块:
2. 将以下 Source 和 Sink 模块添加到模型中:
o 从 Sources 库中,在 MATLAB Function 模块的左侧添加一个 Constant 模块,并将其值设置为向量 [2 3 4 5]
。
o 从 Sinks 库中,在 MATLAB Function 模块的右侧添加两个 Display 模块。
3. 在 Simulink Editor 中,选择 File > Save As,将模型另存为 call_stats_block1
。
编写 MATLAB Function 模块
以下练习演示如何为模块编程,以计算值向量的均值和标准差:
1. 打开您在向模型中添加一个 MATLAB Function 模块的最后保存的 call_stats_block1
模型。双击 MATLAB Function 模块 fcn
将其打开以进行编辑。
将显示默认的函数签名。
2. 编辑函数头行:
3. function [mean,stdev] = stats(vals)
函数 stats
计算向量 vals
中的值的统计均值和标准差。函数头将 vals
声明为 stats
函数的参数,将 mean
和 stdev
作为返回值。
4. 将模型另存为 call_stats_block2
。
5. 按如下所示完成与 MATLAB Function 模块的连接。
6. 在 MATLAB Function 模块编辑器中,在函数头后输入一行空格,然后添加以下代码:
7. % calculates a statistical mean and a standard
8. % deviation for the values in vals.
9.
10. len = length(vals);
11. mean = avg(vals,len);
12. stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
13. plot(vals,'-+');
14.
15. function mean = avg(array,size)
16. mean = sum(array)/size;
17. 将模型另存为 call_stats_block2
。
编译函数并检查错误
在 Simulink 模型中为 MATLAB Function 模块编程后,可以编译函数并测试是否有错误。本节介绍以下步骤:
1. 设置编译器。
2. 编译函数。
3. 定位并修复错误。
设置编译器
编译 MATLAB Function 模块需要使用支持的编译器。MATLAB 会自动选择一个编译器作为默认编译器。如果您的系统上安装了多个受 MATLAB 支持的编译器,您可以使用 mex -setup
命令更改默认编译器。请参阅更改默认编译器 (MATLAB)。
仿真编译支持的编译器. 要查看用于编译包含 MATLAB Function 模块的模型以进行仿真的编译器列表,请执行以下操作:
1. 导航到 Supported and Compatible Compilers 网页。
2. 选择您的平台。
3. 在针对 Simulink 和相关产品的表格中,在标题为 Simulink for MATLAB Function blocks 的列中查找打勾的编译器。
代码生成支持的编译器. 要为包含 MATLAB Function 模块的模型生成代码,可将 Simulink 软件支持的任何 C 编译器与 Simulink Coder™ 结合使用以进行代码生成。要查看这些编译器的列表,请执行以下操作:
1. 导航到 Supported and Compatible Compilers 网页。
2. 选择您的平台。
3. 在针对 Simulink 和相关产品的表格中,在标题为 Simulink Coder 的列中查找打勾的编译器。
如何为 MATLAB Function 模块生成代码
1. 打开您在编写 MATLAB Function 模块的最后保存的 call_stats_block2
模型。
2. 双击其中的 MATLAB Function 模块 stats
,打开该模块进行编辑。
3. 在 MATLAB Function 模块编辑器中,选择 Build Model > Build 以编译和构建示例模型。
如果没有发生错误,Simulation Diagnostics 窗口将显示一条表示成功的消息。否则,此窗口可帮助您定位错误,如如何定位和修复错误中所述。
如何定位和修复错误
如果编译过程中出现错误,Simulation Diagnostics 窗口将列出错误,并提供指向违规代码的链接。
以下练习显示如何在 MATLAB Function 模块中定位和修复错误。
1. 在 stats
函数中,将局部函数 avg
更改为虚构的局部函数 aug
,然后再次编译,即可在窗口中看到以下消息:
Simulation Diagnostics 窗口为检测到的每个错误显示一个红色按钮。
2. 点击第一个错误行,在底部错误窗口显示其诊断消息。
该消息还链接一个报告,提供有关 MATLAB 函数中的变量和表达式的编译时类型信息。此信息可帮助您诊断错误消息并了解类型传播规则。有关该报告的详细信息,请参阅 MATLAB Function Reports。
3. 在所选错误的诊断消息中,点击函数名称后面的蓝色链接,以显示有问题的代码。
有问题的代码行在 MATLAB Function 模块编辑器中突出显示:
4. 通过将 aug
改回 avg
并重新编译来纠正错误。
定义输入和输出
在您在编写 MATLAB Function 模块中定义的 MATLAB Function 模块的 stats
函数头中,函数参数 vals
是输入,mean
和 stdev
是输出。默认情况下,函数输入和输出从其端口连接的信号继承数据类型和大小。在本主题中,您将检查 MATLAB Function 模块的输入和输出数据,以验证它们是否继承了正确的类型和大小。
1. 打开您在编写 MATLAB Function 模块的最后保存的 call_stats_block2
模型。双击 MATLAB Function 模块 stats
将其打开以进行编辑。
2. 在 MATLAB Function 模块编辑器中,选择 Edit Data。
Ports and Data Manager 将打开,帮助您为 MATLAB Function 模块定义参数。
左窗格显示您已经为 MATLAB Function 模块创建的参数 vals
以及返回值 mean
和 stdev
。请注意,为 vals
指定的 Scope 是 Input
,即 Input from Simulink 的简写。为 mean
和 stdev
指定的 Scope 是 Output
,即 Output to Simulink 的简写。
3. 在 Ports and Data Manager 的左窗格中,在 vals
行中的任意位置点击以突出显示。
右窗格显示 vals
的 Data 属性对话框。默认情况下,输入和输出参数的类、大小、单位以及复/实性从每个输入或输出端口连接的信号继承而来。通过将 Size 设置为 -1
,将 Complexity 设置为 Inherited
并将 Type 设置为 “Inherit:Same as Simulink
”,即可指定继承。
大小和类型的实际继承值是在编译模型时设置的,并显示在左窗格中的 Compiled Type 和 Compiled Size 列。
您可以通过在 Data 属性对话框的 Type 字段中选择类型来指定输入或输出参数的类型,例如 double
。还可以通过在 Size 字段中输入表达式来指定输入或输出参数的大小。例如,您可以在 Size 字段中输入 [2 3]
,将 vals
指定为 2×3 矩阵。有关可输入的类型和大小表达式的详细信息,请参阅指定函数参数类型和指定函数参数大小。
注意
在您为 MATLAB Function 模块函数添加的任何数组中,第一个索引都默认为 1
,就像在 MATLAB 中一样。
为代码生成定义局部变量
如果您打算从 MATLAB Function 模块中的 MATLAB 算法生成代码,则必须首先显式指定局部变量的类、大小和复/实性,然后才能在运算中使用这些局部变量或将它们作为输出返回(请参阅Data Definition for Code Generation)。在示例函数 stats
中,局部变量 len
是在用于计算均值和标准差之前定义的:
len = length(vals);
通常情况下,一旦将属性赋给变量,就不能在函数体中的其他地方重新定义变量的类、大小或复/实性,但也有例外情况(请参阅Reassignment of Variable Properties)。
最后
以上就是平淡篮球为你收集整理的matlab如何创建callback函数_创建使用 MATLAB Function 模块的模型的全部内容,希望文章能够帮你解决matlab如何创建callback函数_创建使用 MATLAB Function 模块的模型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复