今天要用MATLAB里面的s-fuction,以前从未使用过,头一次,找过文档,下过实例代码,在错误里面遨游。
成功的一个例子,函数y=k*x+b。
脚本代码fun.m。
function [sys,x0,str,ts] = fun(t,x,u,flag,k,b)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
%case 1,sys=mdlDerivatives(t,x,u,A,B,C,D);
case 3
sys=mdlOutputs(t,x,u,k,b);
case { 1, 2, 4, 9 }
sys = [];
otherwise
error(num2str(flag));
end
function [sys,x0,str,ts]=mdlInitializeSizes()
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs =1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes); %x0 = zeros(2,1);
x0=[];
str = [];
ts = [-1,0];
%function sys=mdlDerivatives(t,x,u,k,b)
%sys =k*u+b; % end mdlDerivatives
function sys=mdlOutputs(~,~,u,k,b)
sys = k*u+b;
接着是simulink仿真:
结果就不多说了,能出现想要的图片。
说的是坑,请接着看。
看好了,上面是代码导入和控制参数的设置。
接着是右击s-function模块,找到Mask,选择Create Mask,到下图:
然后添加控制参数。