buffer

matlab中的buffer函数可以将信号缓存为数据帧矩阵。

 y = buffer(x,n) 
 y = buffer(x,n,p) 
[y,z] = buffer(...) 
[y,z,opt] = buffer(...) 

分割长度L的信号x成不重叠的长度为n的数据帧,每一帧占据输出n行L/n列矩阵y的一列。当L/n不能整除时,在最后一列通过补0使其达到长度为n。

y = buffer(x,n,p) 

fig1
(2) x=1:30,n=7,p=3x=1:30,n=7,p=−3<script type="math/tex" id="MathJax-Element-126"> x= 1:30, n=7, p=-3</script>
fig

y = buffer(x,n,p,opt) 

p>0p>0<script type="math/tex" id="MathJax-Element-252">p>0</script>,opt 指定一个长度为p的向量插入在第一个信号的元素之前,opt取默认值时为zeros(p,1), 取‘nodelay’时,直接在缓存矩阵中写入信号的第一个元素。

p<0p<0<script type="math/tex" id="MathJax-Element-253">p<0</script>, opt是[0,-P]里面的一个整数,比如x=1:30,n=7,p=3opt=2x=1:30,n=7,p=3,opt=2<script type="math/tex" id="MathJax-Element-254"> x= 1:30, n=7, p=3,opt=2</script>

 >> buffer(x,n,-3,2) ans = 3 13 23 4 14 24 5 15 25 6 16 26 7 17 27 8 18 28 9 19 29
 [y,z] = buffer(...)

把长度L的信号x分割成程度为n的帧,输出为y。 如果y是重叠的,那么大小为nxm,m=floor(L/(np))m=floor(L/(n−p))<script type="math/tex" id="MathJax-Element-280">m = floor(L/(n-p))</script>, 当 length(opt)=plength(opt)=p<script type="math/tex" id="MathJax-Element-281">length(opt) = p</script> 或者 m=floor((Ln)/(np))+1m=floor((L−n)/(n−p))+1<script type="math/tex" id="MathJax-Element-282"> m = floor((L-n)/(n-p))+1</script> 当 opt=nodelayopt=′nodelay′<script type="math/tex" id="MathJax-Element-283">opt = 'nodelay'</script>。 如果y是错开的,大小为nxm,其中 m=floor((Lopt)/(np))+(rem((Lopt),(np))>=n)m=floor((L−opt)/(n−p))+(rem((L−opt),(n−p))>=n)<script type="math/tex" id="MathJax-Element-284"> m = floor((L-opt)/(n-p)) + (rem((L-opt),(n-p)) >= n)</script> 当输入信号的存放在指定大小的帧矩阵中时还有剩余的信号,那么这些剩余的信号存放在z中。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐