40 if (n <= 0) {cout <<
"CWB::Window::Window - window size must be > 0" << endl;
exit(1);}
41 if (formula == NULL) {cout <<
"CWB::Window::Window - window formula not defined" << endl;
exit(1);}
46 bool iswindow =
false;
50 if (strcmp(formula,
"barthann") == 0) {
barthann (
window, n);iswindow=
true;}
51 if (strcmp(formula,
"bartlett") == 0) {
bartlett (
window, n);iswindow=
true;}
52 if (strcmp(formula,
"blackman") == 0) {
blackman (
window, n);iswindow=
true;}
54 if (strcmp(formula,
"bohman") == 0) {
bohman (
window, n);iswindow=
true;}
55 if (strcmp(formula,
"flattop") == 0) {
flattop (
window, n);iswindow=
true;}
56 if (strcmp(formula,
"gauss") == 0) {
gauss (
window, n, fParameter);iswindow=
true;}
57 if (strcmp(formula,
"hamming") == 0) {
hamming (
window, n);iswindow=
true;}
58 if (strcmp(formula,
"hann") == 0) {
hann (
window, n);iswindow=
true;}
59 if (strcmp(formula,
"nuttall") == 0) {
nuttall (
window, n);iswindow=
true;}
61 if (strcmp(formula,
"triangular") == 0) {
triangular (
window, n);iswindow=
true;}
62 if (strcmp(formula,
"tuckey") == 0) {
tuckey (
window, n, fParameter);iswindow=
true;}
63 if (strcmp(formula,
"welch") == 0) {
welch (
window, n);iswindow=
true;}
66 if (iswindow==
false) {cout <<
"CWB::Window::Window - window not defined" << endl;
exit(1);}
78 if ((i<0) || (i>
size)) {cout <<
"CWB::Window::GetValue - index not allowed" << endl;
exit(1);}
85 for (
unsigned int i=0;
i<
n;
i++) norm += pow(out_window[
i],2);
87 for (
unsigned int i=0;i<
n;i++) out_window[i] /= sqrt(norm);
94 for (i = 0; i <
n; i++) {
96 f = ((double) i) / ((double) (n - 1));
97 out_window[
i] = 0.62 -0.48*(f - 0.5) +
98 0.38 * cos(2 * M_PI * (f - 0.5));
109 for (i = 0; i < (n/2) +odd; i++)
110 out_window[i] = 2.0 * ((
double)
i) / ((
double) (n - 1));
111 for (i = (n/2) + odd; i <
n; i++)
112 out_window[i] = 2.0 - 2.0 * ((
double)
i) / ((
double) (n - 1));
119 for (i = 0; i <
n; i++)
122 f = ((double) i) / ((double) (n - 1));
123 out_window[
i] = (0.42
124 - 0.5 * cos (2.0 * M_PI * f)
125 + 0.08 * cos (4.0 * M_PI * f));
133 for (i = 0; i <
n; i++)
136 f = ((double) i) / ((double) (n - 1));
137 out_window[
i] = 0.35875 -
138 0.48829 * cos(2.0 * M_PI * f) +
139 0.14128 * cos(4.0 * M_PI * f) -
140 0.01168 * cos(6.0 * M_PI * f);
148 for (i = 0; i <
n; i++)
151 f = (((double) i) - ((double) (n / 2))) /
153 out_window[
i] = (1.0 -
f) * cos(M_PI * f) +
154 (1 / M_PI) * sin(M_PI * f);
164 for (i = 0; i <
n; i++)
167 f = ((double) i) / ((double) (n - 1));
168 out_window[
i] = 1.0 -
169 1.93 * cos(2.0 * M_PI * f) +
170 1.29 * cos(4.0 * M_PI * f) -
171 0.388 * cos(6.0 * M_PI * f) +
172 0.322 * cos(8.0 * M_PI * f);
180 if (alpha < 2) alpha = 2.5;
182 for (i = 0; i <
n; i++)
185 f = (((double) i) - ((double) (n / 2))) /
187 out_window[
i] = exp(-0.5 * (alpha * f) * (alpha * f));
195 for (i = 0; i <
n; i++)
198 f = ((double) i) / ((double) (n - 1));
199 out_window[
i] = 0.54 - 0.46 * cos (2.0 * M_PI * f);
207 for (i = 0; i <
n; i++)
210 f = ((double) i) / ((double) (n - 1));
211 out_window[
i] = 0.5 - 0.5 * cos (2.0 * M_PI * f);
221 for (i = 0; i <
n; i++)
224 f = ((double) i) / ((double) (n - 1));
225 out_window[
i] = 0.3635819 -
226 0.4891775 * cos(2.0 * M_PI * f) +
227 0.1365995 * cos(4.0 * M_PI * f) -
228 0.0106411 * cos(6.0 * M_PI * f);
237 for (i = 0; i <
n; i++)
255 mirror = (n + odd) / 2;
258 for (i = 0; i < mirror; i++)
261 k = 2 * (i + 1) + odd - 1;
262 out_window[
i] = (((double) k) / ((double) (n + odd)));
265 for (i = mirror; i <
n; i++)
267 out_window[
i] = out_window[n - i - 1];
275 for (i = 0; i < (((double) n) / 2.0) * (1 +
r); i++)
280 f = ((double) i) - (((double) n) / 2.0) * (1 +
r);
281 f = f / (((double) n) * (1 -
r));
282 out_window[
i] = 0.5 * ( 1.0 + cos(M_PI * f));
290 for (i = 0; i <
n; i++)
292 out_window[
i] = 1-pow(((
double)i-(
double)n/2.0)/((
double)n/2.0),2);
void blackmanharris(double *out_window, unsigned n)
void flattop(double *out_window, unsigned n)
void hamming(double *out_window, unsigned n)
void gauss(double *out_window, unsigned n, double alpha)
cout<< "SNR "<< xsnr<< endl;wavearray< double > f
double GetValue(unsigned i)
void hann(double *out_window, unsigned n)
void blackman(double *out_window, unsigned n)
void rectangular(double *out_window, unsigned n)
void tuckey(double *out_window, unsigned n, double r)
void triangular(double *out_window, unsigned n)
void bohman(double *out_window, unsigned n)
void welch(double *out_window, unsigned n)
void nuttall(double *out_window, unsigned n)
void barthann(double *out_window, unsigned n)
void bartlett(double *out_window, unsigned n)
void Normalize(double *out_window, unsigned n)
Window(char *formula, unsigned n, double fParameter=0)