⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch2example18sfun.m

📁 清华大学出版社 邵玉斌编写的《通信系统建模与仿真实例分析》一书的所有MATLAB和SIMULINK代码
💻 M
字号:
function [sys,x0,str,ts] =ch2example18Sfun(t,x,u,flag,numofshowsteps) 
% 简单的示波器
global T Y N; % 声明使用的全局变量
switch flag, 
    case 0       % flag=0 初始化 
       sizes = simsizes;           % 获取SIMULINK仿真变量结构
       sizes.NumContStates  = 0;   % 连续系统的状态数为0
       sizes.NumDiscStates  = 0;   % 离散系统的状态数为0
       sizes.NumOutputs     = 0;   % 输出信号数目是0 
       sizes.NumInputs      = 1;   % 输入信号数目是1
       sizes.DirFeedthrough = 1;   % 该系统是直通的 
       sizes.NumSampleTimes = 1;   % 这里必须为1 
       sys = simsizes(sizes); 
       str = [];           % 通常为空矩阵 
       x0  = [];           % 初始状态矩阵x0 (零状态情况) 
       ts  = [0 0];        % 表示连续取样时间的仿真
       N=0;                % 缓冲区全局变量初始化
       T=zeros(1,numofshowsteps-1);
       Y=zeros(1,numofshowsteps-1); 
    case 3                 % flag=3 计算输出 
        if N <  numofshowsteps-1 % 将输入暂存到缓冲区中
            N=N+1;   % 缓冲区数组跑标
            Y(N)=u;  % 记录当前信号
            T(N)=t;  % 记录当前时刻
        else         % 缓冲区满(一帧完成)则作图
            figure(1); plot(T-min(T), Y);   % 作出一帧信号波形
            axis([0  max(T)-min(T)  1.1*min(Y) 1.1*max(Y)]);% 坐标范围
            set(gcf,'DoubleBuffer','on');   % 双缓冲避免作图闪烁
            drawnow;% 作图
            N=0;    % 缓冲区跑标复位
        end
    case {1, 2, 4, 9 }    % 其他作不处理的flag 
       sys=[];            % 无用的flag时返回sys为空矩阵
otherwise % 异常处理 
       error(['Unhandled flag = ',num2str(flag)]); 
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -