-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconvolution.cpp
More file actions
81 lines (71 loc) · 1.8 KB
/
Copy pathconvolution.cpp
File metadata and controls
81 lines (71 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "convolution.hpp"
convolution::convolution(long long int k,signal *x, signal *h)
{
setK(k);
sequence auxX(-k,k,x),auxH(-k,k,h);
setX(auxX);
setH(auxH);
/*std::cout<<"AuxX-Size: "<<auxX.getS().size()<<std::endl;
std::cout<<"AuxH-Size: "<<auxH.getS().size()<<std::endl;
std::cout<<"x-Size: "<<this->x.getS().size()<<std::endl;
std::cout<<"h-Size: "<<this->h.getS().size()<<std::endl;//*/
}
convolution::~convolution()
{
}
convolution::convolution(convolution &toCopy) noexcept : k{toCopy.getK()}, x{toCopy.getX()}, h{toCopy.getH()}
{
}
convolution& convolution::operator=(convolution &toCopy) noexcept
{
setK(toCopy.getK());
setX(toCopy.getX());
setH(toCopy.getH());
return *this;
}
convolution::convolution(convolution &&toMove) noexcept : k{std::move(toMove.getK())}, x{std::move(toMove.getX())}, h{std::move(toMove.getH())}
{
}
convolution& convolution::operator=(convolution &&toMove) noexcept
{
setK(std::move(toMove.getK()));
setX(std::move(toMove.getX()));
setH(std::move(toMove.getH()));
return *this;
}
std::complex<double> convolution::get(long long int n)
{
//std::cout<<"GET 1"<<std::endl;
std::complex<double> value(0,0);
//std::cout<<"GET 2"<<std::endl;
for(long long int i=-k;i<=k;i++)
{
/*std::cout<<"Value"<<value<<std::endl;
std::cout<<"i"<<i<<std::endl;
std::cout<<"x[i]"<<x.get(i)<<std::endl;
std::cout<<"h[n-i]"<<h.get(n-i)<<std::endl;//*/
value+=(x.get(i))*(h.get(n-i));
}
//std::cout<<"GET 3"<<std::endl;
return value;
}
long long int convolution::getK() const
{
return k;
}
void convolution::setK(long long int k)
{
this->k = k;
}
const sequence& convolution::getH() const {
return h;
}
void convolution::setH(const sequence &h) {
this->h = h;
}
const sequence& convolution::getX() const {
return x;
}
void convolution::setX(const sequence &x) {
this->x = x;
}