今天处理语音信息的时候生成了一段3716*12的语音特征值,要把它分割成500*12的小块。
首先想到用matlab的reshape函数,但是reshape只能改变一个矩阵的形状,无法分割。后来发现原来还有三次矩阵这么个东西!
要分割的矩阵为
c <3716*12 double>
mod(3716,500) = 7
先申明一个500*7=3500行空间准备存放每一个小矩阵,末尾的216行就丢弃了。
voices = zero(500,12,7);
然后用循环
for i = 1:7
voices(:,:,i) = c(500*(i-1)+1:500*i,:);
end
这样一个长矩阵就分割好啦。
分好的矩阵形式上是在一块的,但逻辑上已经分开了,比如要看第二个矩阵
voices(:,:,2);
就可以查询到。
</pre><pre name="code" class="html"><pre name="code" class="plain">c = rand(3716,12);
voices = zeros(500,12,7);
for i = 1:1:7
voices(:,:,i) = c(500*(i-1)+1:500*i,:);
end