C語言實現enframe分幀函數


請讀者先閱讀語音信號的分幀、加窗處理

C程序

#include<stdio.h>
#include<math.h>
int main()
{
   double data[] =
       {0.768187,0.038377,0.988020,0.361082,0.077160,0.080347,0.415599,0.875824,0.460382,0.765005,
	0.574078,0.837870,0.072945,0.551139,0.465576,0.260749,0.898244,0.699404,0.062972,0.202209,
	0.103278,0.843798,0.480974,0.361871,0.971238,0.032254,0.324107,0.147645,0.075727,0.694852,
	0.185026,0.373034,0.799405,0.538251,0.470683,0.678150,0.519623,0.936166,0.219218,0.229147,
	0.784549,0.988295,0.337045,0.243953,0.585524,0.053888,0.733464,0.416610,0.394888,0.231164,
	0.159220,0.368160,0.983204,0.950094,0.165792,0.838976,0.155810,0.573604,0.493792,0.455559,
	0.455850,0.661032,0.371700,0.554257,0.569410,0.337716,0.660280,0.725031,0.638102,0.035884,
	0.513343,0.450280,0.935450,0.724556,0.242168,0.456949,0.395598,0.629937,0.368696,0.174494,
	0.296408,0.362860,0.431749,0.997003,0.993683,0.316080,0.970864,0.884647,0.979262,0.171792,
	0.253931,0.207820,0.692942,0.368530,0.737680,0.636723,0.456677,0.416622,0.954170,0.309826};

   int N=sizeof(data)/sizeof(data[0]), wlen=16, inc=6;	//N爲數據個數,wlen爲幀長,inc爲幀移
   int fn = ceil(1.0*(N-wlen)/inc+1);	//計算幀數fn
   double arr[fn][wlen];
   int i, j, k;
   for(i=0; i<fn; i++)	//i控制矩陣的行
   {
      for(j=0; j<wlen; j++)	//j控制矩陣的列
      {
         arr[i][j] = 0;	//對矩陣arr進行初始化
      }
   }

   for(i=0; i<fn; i++)
   {
      if(i<fn-1)	//向前fn-1幀(矩陣arr的前fn-1行)存入數據
      {
         for(j=0,k=inc*i; j<wlen,k<inc*i+wlen; j++,k++)	//前fn-1行每行存入wlen個數據
           arr[i][j] = data[k];
     }
      else	//向第fn幀(矩陣arr的第fn行)存入數據
      {
         for(j=0,k=inc*i; j<N-(fn-1)*inc,k<=inc*i+(N-(fn-1)*inc);j++,k++)	//最後一行存入N-(fn-1)*inc個數據
           arr[i][j] = data[k];
      }
   }
   
   printf("enframe函數返回的矩陣:\n");
   for(i=0; i<fn; i++)
   {
      if(i<fn-1)	//前fn-1行,行與行之間換行
      {
         for(j=0; j<wlen; j++)
         {
            if(j<wlen-1)
              printf("%f ", arr[i][j]);
            else
              printf("%f", arr[i][j]);
         }
         printf("\n");
      }
      else
      {
         for(j=0; j<wlen; j++)
         {
            if(j<wlen-1)
              printf("%f ", arr[i][j]);
            else
              printf("%f", arr[i][j]);
         }
      }
   }
}      

運行結果:

wlen=16

在這裏插入圖片描述

0.768187 0.038377 0.988020 0.361082 0.077160 0.080347 0.415599 0.875824 0.460382 0.765005 0.574078 0.837870 0.072945 0.551139 0.465576 0.260749
0.415599 0.875824 0.460382 0.765005 0.574078 0.837870 0.072945 0.551139 0.465576 0.260749 0.898244 0.699404 0.062972 0.202209 0.103278 0.843798
0.072945 0.551139 0.465576 0.260749 0.898244 0.699404 0.062972 0.202209 0.103278 0.843798 0.480974 0.361871 0.971238 0.032254 0.324107 0.147645
0.062972 0.202209 0.103278 0.843798 0.480974 0.361871 0.971238 0.032254 0.324107 0.147645 0.075727 0.694852 0.185026 0.373034 0.799405 0.538251
0.971238 0.032254 0.324107 0.147645 0.075727 0.694852 0.185026 0.373034 0.799405 0.538251 0.470683 0.678150 0.519623 0.936166 0.219218 0.229147
0.185026 0.373034 0.799405 0.538251 0.470683 0.678150 0.519623 0.936166 0.219218 0.229147 0.784549 0.988295 0.337045 0.243953 0.585524 0.053888
0.519623 0.936166 0.219218 0.229147 0.784549 0.988295 0.337045 0.243953 0.585524 0.053888 0.733464 0.416610 0.394888 0.231164 0.159220 0.368160
0.337045 0.243953 0.585524 0.053888 0.733464 0.416610 0.394888 0.231164 0.159220 0.368160 0.983204 0.950094 0.165792 0.838976 0.155810 0.573604
0.394888 0.231164 0.159220 0.368160 0.983204 0.950094 0.165792 0.838976 0.155810 0.573604 0.493792 0.455559 0.455850 0.661032 0.371700 0.554257
0.165792 0.838976 0.155810 0.573604 0.493792 0.455559 0.455850 0.661032 0.371700 0.554257 0.569410 0.337716 0.660280 0.725031 0.638102 0.035884
0.455850 0.661032 0.371700 0.554257 0.569410 0.337716 0.660280 0.725031 0.638102 0.035884 0.513343 0.450280 0.935450 0.724556 0.242168 0.456949
0.660280 0.725031 0.638102 0.035884 0.513343 0.450280 0.935450 0.724556 0.242168 0.456949 0.395598 0.629937 0.368696 0.174494 0.296408 0.362860
0.935450 0.724556 0.242168 0.456949 0.395598 0.629937 0.368696 0.174494 0.296408 0.362860 0.431749 0.997003 0.993683 0.316080 0.970864 0.884647
0.368696 0.174494 0.296408 0.362860 0.431749 0.997003 0.993683 0.316080 0.970864 0.884647 0.979262 0.171792 0.253931 0.207820 0.692942 0.368530
0.993683 0.316080 0.970864 0.884647 0.979262 0.171792 0.253931 0.207820 0.692942 0.368530 0.737680 0.636723 0.456677 0.416622 0.954170 0.309826

wlen=18

在這裏插入圖片描述

0.768187 0.038377 0.988020 0.361082 0.077160 0.080347 0.415599 0.875824 0.460382 0.765005 0.574078 0.837870 0.072945 0.551139 0.465576 0.260749 0.898244 0.699404
0.415599 0.875824 0.460382 0.765005 0.574078 0.837870 0.072945 0.551139 0.465576 0.260749 0.898244 0.699404 0.062972 0.202209 0.103278 0.843798 0.480974 0.361871
0.072945 0.551139 0.465576 0.260749 0.898244 0.699404 0.062972 0.202209 0.103278 0.843798 0.480974 0.361871 0.971238 0.032254 0.324107 0.147645 0.075727 0.694852
0.062972 0.202209 0.103278 0.843798 0.480974 0.361871 0.971238 0.032254 0.324107 0.147645 0.075727 0.694852 0.185026 0.373034 0.799405 0.538251 0.470683 0.678150
0.971238 0.032254 0.324107 0.147645 0.075727 0.694852 0.185026 0.373034 0.799405 0.538251 0.470683 0.678150 0.519623 0.936166 0.219218 0.229147 0.784549 0.988295
0.185026 0.373034 0.799405 0.538251 0.470683 0.678150 0.519623 0.936166 0.219218 0.229147 0.784549 0.988295 0.337045 0.243953 0.585524 0.053888 0.733464 0.416610
0.519623 0.936166 0.219218 0.229147 0.784549 0.988295 0.337045 0.243953 0.585524 0.053888 0.733464 0.416610 0.394888 0.231164 0.159220 0.368160 0.983204 0.950094
0.337045 0.243953 0.585524 0.053888 0.733464 0.416610 0.394888 0.231164 0.159220 0.368160 0.983204 0.950094 0.165792 0.838976 0.155810 0.573604 0.493792 0.455559
0.394888 0.231164 0.159220 0.368160 0.983204 0.950094 0.165792 0.838976 0.155810 0.573604 0.493792 0.455559 0.455850 0.661032 0.371700 0.554257 0.569410 0.337716
0.165792 0.838976 0.155810 0.573604 0.493792 0.455559 0.455850 0.661032 0.371700 0.554257 0.569410 0.337716 0.660280 0.725031 0.638102 0.035884 0.513343 0.450280
0.455850 0.661032 0.371700 0.554257 0.569410 0.337716 0.660280 0.725031 0.638102 0.035884 0.513343 0.450280 0.935450 0.724556 0.242168 0.456949 0.395598 0.629937
0.660280 0.725031 0.638102 0.035884 0.513343 0.450280 0.935450 0.724556 0.242168 0.456949 0.395598 0.629937 0.368696 0.174494 0.296408 0.362860 0.431749 0.997003
0.935450 0.724556 0.242168 0.456949 0.395598 0.629937 0.368696 0.174494 0.296408 0.362860 0.431749 0.997003 0.993683 0.316080 0.970864 0.884647 0.979262 0.171792
0.368696 0.174494 0.296408 0.362860 0.431749 0.997003 0.993683 0.316080 0.970864 0.884647 0.979262 0.171792 0.253931 0.207820 0.692942 0.368530 0.737680 0.636723
0.993683 0.316080 0.970864 0.884647 0.979262 0.171792 0.253931 0.207820 0.692942 0.368530 0.737680 0.636723 0.456677 0.416622 0.954170 0.309826 0.000000 0.000000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章