simulink中的mux与的demux

文章目录

      • Question
      • 1. 代码与仿真图
      • 2 demux
      • 3 mux
        • 3.1 mux的使用顺序问题
      • 4 总结

Question

对Mux与demux的好奇。

1. 代码与仿真图

source.m中输出两个信号:xd=cos(t);与 yd=sin(t);,Source.m文件代码如下:

%function [sys,x0,str,ts] = spacemodel(t,x,u,flag)
function [sys,x0,str,ts] = Source(t,x,u,flag)
switch flag,
case 0,
    [sys,x0,str,ts]=mdlInitializeSizes;
case 3,
    sys=mdlOutputs(t,x,u);
case {1,2,4,9}
    sys=[];
otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;

sizes.NumOutputs     = 2;
sizes.NumInputs      = 0;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [0 0];

function sys=mdlOutputs(t,x,u)
 xd=cos(t);
 yd=sin(t);

sys(1)=xd;
sys(2)=yd;
%sys(3)=xd;
% sys(4)=yd;

仿真构建如图:
simulink中的mux与的demux_第1张图片

2 demux

运行上述仿真,得到波形如图(从左到右分别为scope1,scope2,scope3):
simulink中的mux与的demux_第2张图片
现象:
scope1中为xd,yd的波形;
scope2中为xd的波形;
scope3中为yd的波形。
结论:
demux可以将信号按照先后顺序分离(具体顺序为:在m函数中先出现的信号在第一位,后出现的为第二位,以此类推)。

3 mux

构建仿真图如下:
simulink中的mux与的demux_第3张图片
运行仿真,得到scope4波形吐下:
simulink中的mux与的demux_第4张图片
结论:scope4波形同scope1,则mux具有将信号组合起来的作用。

3.1 mux的使用顺序问题

构建仿真如图
simulink中的mux与的demux_第5张图片
scope4波形如图:
simulink中的mux与的demux_第6张图片
此时,已经无法从scope4中看到顺序问题,先从scope4-To Workspace中看。回到matlab工作区,观察到出现scope4变量如图:
simulink中的mux与的demux_第7张图片
查看scope4的具体内容:
simulink中的mux与的demux_第8张图片
观察到scope4的顺序为:
xd;yd;xd;yd()从左往右看)与仿真中,从上到下的顺序相同。

4 总结

  1. demux 按顺序将信号分离。
  2. mux 按顺序将信号束在一起(数据不发生耦合,像是一根电缆内部包含了许许多多的信号线)。

你可能感兴趣的:(Matlab)