taylorwin(n,nbar,sll)加窗函数 c代码
时间: 2024-05-12 18:19:45 浏览: 77
这是一个实现taylorwin(n,nbar,sll)加窗函数的C代码:
```c
#include <math.h>
void taylorwin(int n, int nbar, double sll, double *w)
{
double alpha = nbar * M_PI;
double beta = asinh(1 / sll) / M_PI;
double f1 = cosh(beta * alpha);
double f2 = sinh(beta * alpha);
double f3 = cos(beta * alpha);
double f4 = sinh(beta * sqrt(1 - pow(alpha, 2)));
double f5 = cos(beta * sqrt(1 - pow(alpha, 2)));
double f6 = 1 / f4;
double f7 = 1 / f5;
for (int i = 0; i < n; i++) {
double x = (2.0 * i - n + 1) / (2.0 * n);
double y = sqrt(1 - pow(x, 2));
double u = beta * y;
double v1 = sinh(u * nbar);
double v2 = cosh(u * nbar);
double v3 = cos(u * nbar);
double v4 = sinh(u * sqrt(1 - pow(nbar, 2)));
double v5 = cos(u * sqrt(1 - pow(nbar, 2)));
double v6 = 1 / v4;
double v7 = 1 / v5;
double w1 = v1 / (f1 - v2);
double w2 = v3 / f3;
double w3 = v6 / (f4 - v7);
double w4 = v7 / (f5 - v6);
double w5 = v2 / (f1 - v1);
w[i] = w1 * w2 * w3 * w4 * w5;
}
}
```
该函数的输入参数为:窗口长度n,抗混叠滤波器中的参数nbar和最大副瓣衰减量sll。输出参数为一个长度为n的double数组,存储taylorwin加窗函数的值。
该函数使用了C标准库中的一些数学函数,如sinh、cosh、cos、asinh等,需要在代码文件中包含math.h头文件。
阅读全文