simulink中的mux与的demux

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;

仿真构建如图:
在这里插入图片描述

2 demux

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

3 mux

构建仿真图如下:
在这里插入图片描述
运行仿真,得到scope4波形吐下:
在这里插入图片描述
结论:scope4波形同scope1,则mux具有将信号组合起来的作用。

3.1 mux的使用顺序问题

构建仿真如图
在这里插入图片描述
scope4波形如图:
在这里插入图片描述
此时,已经无法从scope4中看到顺序问题,先从scope4-To Workspace中看。回到matlab工作区,观察到出现scope4变量如图:
在这里插入图片描述
查看scope4的具体内容:
在这里插入图片描述
观察到scope4的顺序为:
xd;yd;xd;yd()从左往右看)与仿真中,从上到下的顺序相同。

4 总结

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

版权声明:本文为u013647759原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。