Advertisement
seethesatyrrise

Untitled

Jun 26th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. #include "cstdint"
  2. #include "time.h"
  3. #include "iostream"
  4. #include "fstream"
  5. #include "math.h"
  6.  
  7. using namespace std;
  8.  
  9.  //const int BL = 16;
  10.  const float B1[16] =
  11.     {
  12. -0.016833474287991555,
  13. -0.04762411870595349,
  14. -0.057030192634750024,
  15. -0.029189294417230293,
  16.  0.037856908861425814,
  17.  0.12878672864365734,
  18.  0.21557399219769768,
  19.  0.26845945034314445,
  20.  0.26845945034314445,
  21.  0.21557399219769768,
  22.  0.12878672864365734,
  23.  0.037856908861425814,
  24. -0.029189294417230293,
  25. -0.057030192634750024,
  26. -0.04762411870595349,
  27. -0.016833474287991555,
  28.     };
  29.  
  30. const int BL = 16;
  31. int16_t B[16];
  32. //const int16_t B[16] = {
  33. //-552, -1561, -1869, -956, 1240, 4220, 7064, 8797,
  34. // 8797, 7064, 4220, 1240, -956, -1869, -1561, -552,
  35. //};
  36.  
  37. int16_t* conv(int16_t* fun, int size){
  38.     int16_t* output = new int16_t[size - BL + 1];
  39.  
  40.     for (int i = 0; i < size - BL + 1; i++){
  41.         output[i] = 0;
  42.         for (int j = 0; j < BL; j++){
  43.             output[i] += fun[j + i] * B[BL - j - 1];
  44.         }
  45.     }
  46.     return output;
  47. }
  48.  
  49. float* calc(int16_t* fun, int size){
  50.     float* out = new float[size];
  51.  
  52.     for (int i = 0; i < size; i++){
  53.         out[i] = fun[i] / (float(INT16_MAX));
  54.         cout << fun[i] << "    ";
  55.     }
  56.  
  57.     return out;
  58. }
  59.  
  60. void show(float* a, int size){
  61.     //cout << "\nSHOW\n";
  62.     int k = 0;
  63.     for (int i = 0; i < size; i++){
  64.             //printf("%18.15f\t", a[i]);
  65.         //cout << a[i] << ";\t\t";
  66.         if (!(k%3))
  67.             cout << "\n";
  68.         k++;
  69.     }
  70.  
  71. }
  72.  
  73. int main()
  74. {
  75.     for (int i = 0; i < BL; i++){
  76.         B[i] = (int16_t)(B1[i]*INT16_MAX);
  77.         //cout << B[i] << "\n";
  78.     }
  79.  
  80.     int size = 100;
  81.     int16_t* imp = new int16_t[size];
  82.  
  83.     for (int i = 0; i < size; i++)
  84.         imp[i] = 0;
  85.     imp[20] = 32767;
  86.  
  87.     int16_t* step = new int16_t[size];
  88.  
  89.     for (int i = 0; i < 50; i++)
  90.         step[i] = 0;
  91.  
  92.     for (int i = 49; i < size; i++)
  93.         step[i] = INT16_MAX;
  94.  
  95.     int16_t* impOut = conv(imp, size);
  96.     float *impFloat = calc(impOut, size - BL + 1);
  97.     cout << "imp:\n";
  98.     show(impFloat, size - BL + 1);
  99.  
  100.     int16_t* stepOut = conv(step, size);
  101.     float* stepFloat = calc(stepOut, size - BL + 1);
  102.     cout << "step:\n";
  103.     show(stepFloat, size - BL + 1);
  104.  
  105.     cin.get();
  106.     cin.get();
  107.  
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement