DAV 入门之 MATLAB (6):Simulink

         SIMULINK非常的强大,可以模拟几乎任何系统,而且你只需要了解原理即可。


最初学习SIMULINK时,困扰我的问题有两个,第一个:连续和离散。

对于学习通信出身的人来说,连续和离散起始很好理解,而关键的是,我怎么把连续的东西离散了?怎么让连续的模块能与离散的模块配合工作呢?难道还要去了解采样定理,实现采样保持这么一个模块才能行么?

不,MATLAB虽然有连续和离散系统,但是一个万恶的模块就能将他们连在一起,那就是

“采样率转换模块”

SampleRate Conversion

有了这个模块,就可以将连续的转换为离散的,再用DSP TOOLBOX里的模块处理和观察了。


第二个:基于帧(frame)?和基于采样(sample)?

这个头疼的问题还得引入第三个纠结因子:通道(channel)。

用一张表来阐述这个问题,在simulink的数据处理中,通常都是以2维矩阵来表示数据,如表所示。


 

channel1

channel2

channel3

 

sample1

1

11

21

frame1

sample2

2

12

22

sample3

3

13

23

frame1

sample4

4

14

24

sample5

5

15

25

frame1

sample6

6

16

26


  如表所标注的,每一行为一个采样,这一行又包括了3个通道的数据,而相邻的两个采样组成了一个帧。

基于采样的处理方式,每个仿真周期处理一个采样的数据(含3个通道)。

基于帧的处理方式,每个仿真周期处理一个帧的数据(含2个采样3个通道)。


在 simulink 中,矩阵就是数据形式的定义。也就是说,每一列一定是一个通道,每一行一定是一个采样(或者只含一个采样的帧)。而一般处理过程中,一个矩阵仅含有一个帧,帧是仿真过程中的最大包。

通过 buffer 和 unbuffer 可以调整帧的大小。

通过 math function 中的 转置或者 reshape 模块可以调整通道数。


好了,说道这里,剩下的自己探索了,别忘了,兴趣是最好的老师。


(2016.11.22新增)

Buffer 工具的缓存方式一般为按采样来进行缓存,如果第一个 Buffer 缓存 4 个采样为一帧,后接一个 Buffer 缓存 2 个为一帧,系统如下:

信号A -> Buffer4 -> 信号B -> Buffer2 -> 信号C

那么假设信号 A 的采样率为 fs,那么信号 B 的采样率为 fs/4,信号C的采样率为 fs/2。同时,每一个信号 B 帧进入 Buffer2 时,Buffer2不会按照每一帧进行缓存,而仍然是按照采样进行缓存,导致的结果就是信号 B 的每一帧被拆分为两个信号 C 帧。







  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值