fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector<float> CONV(vector<float>& Y, vector<float>& X)
  7. {
  8.  
  9. if (X.size() < Y.size()) X.resize(Y.size());
  10. else Y.resize(X.size());
  11.  
  12. int d1_size = X.size();
  13. int d2_size = Y.size();
  14. int R_size = d1_size + d2_size - 1;
  15.  
  16. vector<float> out(R_size);
  17.  
  18. //convolution process
  19. for (int i = 0; i < R_size; ++i)
  20. {
  21. int d1_limit = (i < d1_size - 1) ? i : d1_size - 1;
  22. int d2_limit = (i < d2_size - 1) ? 0 : i - (d2_size - 1);
  23.  
  24. for (int j = d2_limit; j <= d1_limit; ++j)
  25. {
  26. out[i] += (X[j] * Y[i - j]);
  27. }
  28. }
  29.  
  30. // for (int i = R_size / 2; i < R_size; ++i)
  31. // out.resize(R_size / 2);
  32. return out;
  33. }
  34.  
  35. int main()
  36. {
  37.  
  38. vector<float> v1(20, 0.5);
  39. vector<float> v2(20, 1);
  40. vector <float> V = CONV(v1, v2);
  41.  
  42. for(int i = 0; i < V.size(); i++)
  43. cout << V[i] << endl;
  44. }
Success #stdin #stdout 0s 4536KB
stdin
Standard input is empty
stdout
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6
6.5
7
7.5
8
8.5
9
9.5
10
9.5
9
8.5
8
7.5
7
6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
1.5
1
0.5