taylorwin(L,nbar,sll)加窗函数 C/C++实现
时间: 2024-05-12 15:16:18 浏览: 134
以下是使用C语言实现taylorwin(L,nbar,sll)加窗函数的代码:
```
#include <stdlib.h>
#include <math.h>
void taylorwin(int L, double nbar, double sll, double* w)
{
int i;
double alpha, A, B, C, D, E, F, G, x, y, z;
alpha = pow(10, sll/20);
A = log(alpha + 1);
B = log(alpha - 1);
C = cosh(nbar * A);
D = sinh(nbar * A);
E = cos(nbar * B);
F = sin(nbar * B);
G = 1 / cosh(nbar * A);
for (i = 0; i < L; i++) {
x = (2 * i - L + 1) / (double)L;
y = nbar * acos(x);
z = sinh(nbar * A) * sin(y) / (nbar * sinh(nbar * A) * sin(y) + 1e-16);
w[i] = G * (cosh(nbar * B) + E * cos(y) - F * sin(y)) - z;
}
}
```
其中,L表示窗口长度,nbar表示窗口带宽,sll表示窗口的副瓣抑制比。w是一个长度为L的数组,表示计算得到的窗口函数。
该函数的实现参考了Matlab中的taylorwin函数,使用了双曲函数和三角函数等数学函数。
阅读全文