马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我要用s函数建一个增量式脉冲编码器的模型,输入为与脉冲编码器同轴的电机的角位移,输出为反馈的脉冲,知道脉冲编码器的分辨率。n代表每相邻两条脉冲编码器上的光栅的夹角,我的思路是如果角位移除以夹角能够整除的话,那么输出为1,不能整除的话输出为0。然后我编程如下:function [sys,x0,str,ts] = sensor(t,x,u,flag,n)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 3
sys=mdlOutputs(t,x,u,n);
case {1,2,4,9}
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 1;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
function sys=mdlOutputs(t,x,u,n)
a = rem(u,n);
if a==0
sys=1;
else sys=0;
end
虽然我看了书,但是我还是不清楚s函数的一些编程规则,所以上面的程序出错了,希望有大虾能够帮忙修正!!多谢先了! |