enframe.m
上传用户:shodew
上传日期:2014-10-29
资源大小:6k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function  xn=enframe(x,N,M)
  2. T=N-M;
  3. wn=hamming(N);                                                             
  4. %x=[1,2,-1,1,1,-1,-1,0,1,1,1,1,3,1,1,1,1,1,6,-1,1,1,1,-1,1,1,1,1,-1,1,2,3];测试向量
  5. x_num=length(x);                                                           %确定数据的长度
  6. frame_num=ceil((x_num-N)/T)+1;                                             %确定帧的数目
  7. for i=1:frame_num-1
  8.     xn(:,i)=wn.*x(T*(i-1)+1:T*(i-1)+N);
  9. end
  10. %对最后一帧进行处理
  11. if x_num==N+(frame_num-1)*T                                                %数据正好可以分为整数帧的情况
  12.      xn(:,frame_num)=wn.*x(T*(frame_num-1)+1:T*(frame_num-1)+N);
  13. else                                                                       %如果不为整数帧,需要补0操作
  14.     zero_num=N+(frame_num-1)*T-x_num;                                      %确定补0的数目
  15.     xn(:,frame_num)=[(x((T*(frame_num-1)+1):x_num))', zeros(1,zero_num)];
  16.     xn(:,frame_num)=wn.*xn(:,frame_num);
  17. end