sys=min;
else
sys=u;
end
case{1,2,4,9}%其他不做处理的flag
sys=[];
otherwise%异常处理
error(['Unhandledflag=',num2str(flag)]);
end
%主函数结束---------------------------------------
仿真模型:
运行结果:
结果说明:
输入信号为一个幅度为1V,频率为1000Hz的余弦波,设定的最小门限为-0.5,最大门限为0.5,示波器扫描周期为2ms。
先在Maltab命令窗口中输入:
Lm=-0.5;Hm=0.5;之后再运行仿真模型。
实验结论:
限幅器的作用是限幅,输入幅度为2的余弦波,通过门限为0.5和-0.5的限幅器后,幅度大于0.5和幅度小于-0.5的部分都被限制了,即不能输出。
2、用S函数实现一个绝对值模块,即输出信号是输入信号求绝对值的结果。
用这个绝对值模块对输入的调幅波进行检波,试仿真得出输出结果。
实验代码:
function[sys,x0,str,ts]=abs(t,x,u,flag)
switchflag
case0%flag=0初始化
sizes=simsizes;%获取simulink仿真变量结构
sizes.NumContStates=0;%连续系统的状态数为0
sizes.NumDiscStates=0;%离散系统的状态数为0
sizes.MumOutputs=1;%输出信号数目是1
sizes.MumInputs=1;%输入信号数目是1
sizes.DirFeedthrough=1;%该系统是直通的
sizes.NumSampleTimes=1;%这里必须为1
sys=simsizes(sizes);
str=[];%通常为空矩阵
x0=[];%初始状态矩阵x0
ts=[00];%采样时间有外部模块给出
%限幅器函数--------------------------------------
case3%flag=3计算输出
ifu>0
sys=u;
elseu<0
sys=-u;
end
case{1,2,4,9}%其他不做处理的flag
sys=[];
otherwise%异常处理
error(['Unhandledflag=',num2str(flag)]);
end
%主函数结束---------------------------------------
仿真模型:
运行结果:
结果说明:
输入信号为一个幅度为2V,频率为1000Hz的三角波,示波器扫描周期为4ms。
实验结论:
输入信号经过“绝对值模块”后,只输出幅度大于0的部分。
3、用S函数实现一个门限比较器,当输入大于设定门限则输出为指定的高电平,否则输出另一个指定的低电平。
实验代码:
function[sys,x0,str,ts]=chensimin3Sfun(t,x,u,flag,Lm,Hm,S)
%S为设定的门限,Lm、Hm分别为指定的低电平和高电平
%u表示基带信号
%size(u)%取消本句注释可观察输入信号u的矩阵维数
switchflag,
case0%flag=0初始化
sizes=simsizes;%获取SIMULINK仿真变量结构
sizes.NumContStates=0;%连续系统的状态数是0
sizes.NumDiscStates=0;%离散系统的状态数是0
sizes.NumOutputs=1;%输出信号数目是1
sizes.NumInputs=-1;%输入信号数目是自适应的
sizes.DirFeedthrough=1;%该系统是直通的
sizes.NumSampleTimes=1;%这里必须为1
sys=simsizes(sizes);
str=[];%通常为空矩阵
x0=[];%初始状态矩阵x0
ts=[-10];%采样时间由外部模块给出
case3%flag=3计算输出
ifu>S
sys=Hm;
elsesys=Lm;
end
case{1,2,4,9}%其他作不处理的flag
sys=[];%无用的flag时返回sys为空矩阵
otherwise%异常处理
error(['Unhandledflag=',num2str(flag)]);
end
仿真模型:
运行结果:
结果说明:
输入信号为一个幅度为2V,频率为1000Hz的方波,示波器扫描周期为4ms。
先在Maltab命令窗口中输入:
S=1;Lm=-1;Hm=1;之后再运行仿真模型。
实验结论:
输入信号经过“门限比较器”后,输出的幅度大小都是指定的,本实验输入的幅度只为1和-1两个指定值。
四、实验报告
通过分析实验结果可知:
某些功能的模块,可以通过代数运算模块实现,比如本次实验的“门限器”、“绝对值模块”、“门限比较器”等。