Level-2 MATLAB S-Function 的模板翻译
一级 MATLAB S-Function 仅支持双精度数据类型。
二级 MATLAB S-Function 支持 Simulink 支持的所有数据类型。可实现多输入多输出。
由于网上关于Level-2 MATLAB S-Function的内容太少,因此本人将msfuntmpl.m文件翻译了一下,方便进行配置使用,在此分享出来,欢迎交流~
系统自带的msfuntmpl.m文件可在命令行窗口输入以下内容打开,建议复制出来,不要在它上面直接编辑
edit([matlabroot,'/toolbox/simulink/blocks/msfuntmpl.m'])
不过实际使用效果实在不好,仿真特别慢,还不如自己写matlab fcn函数来的快,踩坑了,不推荐
function msf_tmpl(block)
% MSFUNTMPL 一个MATLAB S-function的模板
% MATLAB的function,与S-function的名称相同;
% 用你的S-function的名称替换'msf_tmpl';
%
% 设置方法用于设置S-function的基本属性如端口、参数等;
% 不要添加任何其他对function主体的调用;
%
setup(block);
% 函数结束
% 函数:设置===================================================
% 摘要;
% 设置S-functionblock的基本特征,如:;
% - 输入端口
% - 输出端口
% - 对话框参数
% - 选项
% 是否必须: 是
% C MEX对应:mdlInitializeSizes
function setup(block)
% 登记端口的数量;
block.NumInputPorts = 1; % 输入端口数
block.NumOutputPorts = 1; % 输出端口数
% 设置端口属性为继承或动态;
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
% 覆盖输入端口属性;
block.InputPort(1).Dimensions = [1 3]; % 数据维度
block.InputPort(1).DatatypeID = 0; % double 数据类型
block.InputPort(1).Complexity = 'Real';
block.InputPort(1).DirectFeedthrough = false;
% 覆盖输出端口属性;
block.OutputPort(1).Dimensions = [4 1]; % 数据维度
block.OutputPort(1).DatatypeID = 0; % double 数据类型
block.OutputPort(1).Complexity = 'Real';
%%%% 端口数据类型,可以端口ID指定,也可以直接指定数据类型名
% inherited: -1 int16: 4
% double: 0 unit16: 5
% single: 1 int32: 6
% int8: 2 unit32: 7
% unit8: 3 boolean或定点类型: 8
% 登记对话框参数;
block.NumDialogPrms