Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "cstdint"
- #include "time.h"
- #include "iostream"
- #include "fstream"
- #include "math.h"
- using namespace std;
- //const int BL = 16;
- const float B1[16] =
- {
- -0.016833474287991555,
- -0.04762411870595349,
- -0.057030192634750024,
- -0.029189294417230293,
- 0.037856908861425814,
- 0.12878672864365734,
- 0.21557399219769768,
- 0.26845945034314445,
- 0.26845945034314445,
- 0.21557399219769768,
- 0.12878672864365734,
- 0.037856908861425814,
- -0.029189294417230293,
- -0.057030192634750024,
- -0.04762411870595349,
- -0.016833474287991555,
- };
- const int BL = 16;
- int16_t B[16];
- //const int16_t B[16] = {
- //-552, -1561, -1869, -956, 1240, 4220, 7064, 8797,
- // 8797, 7064, 4220, 1240, -956, -1869, -1561, -552,
- //};
- int16_t* conv(int16_t* fun, int size){
- int16_t* output = new int16_t[size - BL + 1];
- for (int i = 0; i < size - BL + 1; i++){
- output[i] = 0;
- for (int j = 0; j < BL; j++){
- output[i] += fun[j + i] * B[BL - j - 1];
- }
- }
- return output;
- }
- float* calc(int16_t* fun, int size){
- float* out = new float[size];
- for (int i = 0; i < size; i++){
- out[i] = fun[i] / (float(INT16_MAX));
- cout << fun[i] << " ";
- }
- return out;
- }
- void show(float* a, int size){
- //cout << "\nSHOW\n";
- int k = 0;
- for (int i = 0; i < size; i++){
- //printf("%18.15f\t", a[i]);
- //cout << a[i] << ";\t\t";
- if (!(k%3))
- cout << "\n";
- k++;
- }
- }
- int main()
- {
- for (int i = 0; i < BL; i++){
- B[i] = (int16_t)(B1[i]*INT16_MAX);
- //cout << B[i] << "\n";
- }
- int size = 100;
- int16_t* imp = new int16_t[size];
- for (int i = 0; i < size; i++)
- imp[i] = 0;
- imp[20] = 32767;
- int16_t* step = new int16_t[size];
- for (int i = 0; i < 50; i++)
- step[i] = 0;
- for (int i = 49; i < size; i++)
- step[i] = INT16_MAX;
- int16_t* impOut = conv(imp, size);
- float *impFloat = calc(impOut, size - BL + 1);
- cout << "imp:\n";
- show(impFloat, size - BL + 1);
- int16_t* stepOut = conv(step, size);
- float* stepFloat = calc(stepOut, size - BL + 1);
- cout << "step:\n";
- show(stepFloat, size - BL + 1);
- cin.get();
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement