以Simulink里面的repeat
的模块为例再了解一下MATLAB的frame based
和sample based
的两种处理方式。
repeat就是进行重复,除了指定重复率\(L\)之外,还有几种常用的重复设置,这些设置选项在downsample等等模块当中也很常见。从两种重复思路Frame-Based Processing
和Sample-Based Processing
来说。
沿着原来的例子操作,搞一下原网页没说清楚的内容。与原网页的设置一致,这里假设输入数据的形状为\(M_i-by-N\),上采样率为\(L\)。
Frame-Based Processing
- Enfore single-rate processing:此时输入数据是\(N\)个不同的通道,此时采样的时候是对每个通道进行上采样。因为是single-rate processing,所以输入输出的数据速率是一样的。所以上采样的数据会在行的方向扩展。比如说2倍上采样,那么\(M_i\)行数据会间隔重复,变成\(2M_i\)行。所以最终输出数据格式为\(2M_i-by-N\)。
- Allow multirate processing:此时仍然是\(N\)个独立的通道,但是因为是multirate,所以输入输出的形状是一样的。假如说上采样率是2,那么假如说有\(M_i-by-N\)的数据进去,你得到的就应该
是两个重复的\(M_i-by-N\)的数据(注意不是把相邻通道重复)其实就是上面间隔的结果拆分,也就是说原来一个样本的时间周期内,输出应该是single rate下上半段加上single rate下半段。
举个例子,输入为reshape(1:16,8,2)
,2倍repeat,采样时间为1,multi rate
下得到的样本为
simout(:,:,1)=
1 9
1 9
2 10
2 10
3 11
3 11
4 12
4 12
simout(:,:,2)=
5 13
5 13
6 14
6 14
7 15
7 15
8 16
8 16
在single rate
下得到的样本为
simout(:,:,1)=
1 9
1 9
2 10
2 10
3 11
3 11
4 12
4 12
5 13
5 13
6 14
6 14
7 15
7 15
8 16
8 16
Sample-Based Processing
- 他会把\(M_i-by-N\)的输入当成是\(M_i \times N\)个独立的通道。
repeat
模块此时只有一个选项就是multirate。假如说上采样率是2,那么假如说有\(M_i-by-N\)的数据进去,你得到的就应该是两个重复的\(M_i-by-N\)的数据(注意不是把上面的间隔重复)。这时候对于repeat
模块来说只有multirate可选。 - 其他情况:
- 对于downsample模块结果会有些不同;这里允许
single rate
的选项。但是这里的结果说出来有点扯蛋的是,实际上这里还是会进行时域上的采样,但是输出的size和sample time都一样,实际上这里被采掉的部分做了个前面的重复。似乎不太像是真正的采样了。
- 对于downsample模块结果会有些不同;这里允许
同样是上面的设置,因为这里是对时间进行重复所以完全看不来任何变化就是重复的
simout(:,:,1)=
1 9
2 10
3 11
4 12
5 13
6 14
7 15
8 16
simout(:,:,2)=
1 9
2 10
3 11
4 12
5 13
6 14
7 15
8 16
总结就是,这里说的通道就是进行操作的牢锢。比如说Frame Based
的情况下,columns就是通道,所以就对列进行操作,而不是时域上的操作。sample Based
的情况就是每个样本都是通道,对时域上进行操作。
以上。