【matlab学习笔记】长矩阵分割

今天处理语音信息的时候生成了一段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

 
 


你可能感兴趣的:(matlab)