matlab taylorwin(n,nbar,sll)加窗函数 c/c++实现 奇数阶
时间: 2024-05-03 09:21:19 浏览: 154
Matlab代码:
```matlab
function w = taylorwin(n, nbar, sll)
% TAYLORWIN Computes the Taylor window coefficient vector.
% W = TAYLORWIN(N, NBAR, SLL) computes the N-point Taylor window
% with a sidelobe level attenuation of SLL dB and a null-to-null
% bandwidth of NBAR points.
%
% Example:
% w = taylorwin(31, 6, 60);
% stem(w);
%
% See also CHEBWIN, KAISER, RECTWIN, WINDOW.
if mod(n, 2) == 0
error('N must be odd');
end
% Convert sidelobe level from dB to linear scale
A = 10^(sll/(-20));
% Compute beta parameter
if A <= 21
beta = 0;
elseif A <= 50
beta = 0.5842 * (A-21)^0.4 + 0.07886 * (A-21);
else
beta = 0.1102 * (A-8.7);
end
% Compute window coefficients
w = zeros(n, 1);
for i = 0:(n-1)/2
a = i - (n-1)/2;
w(i+1) = besseli(0, beta*sqrt(1-(a/nbar)^2))/besseli(0, beta);
w(n-i) = w(i+1);
end
end
```
C/C++代码:
```c
#include <math.h>
void taylorwin(int n, int nbar, double sll, double *w)
{
int i;
double A, beta, a;
if (n % 2 == 0) {
return; /* N must be odd */
}
/* Convert sidelobe level from dB to linear scale */
A = pow(10, sll/(-20.0));
/* Compute beta parameter */
if (A <= 21) {
beta = 0;
} else if (A <= 50) {
beta = 0.5842 * pow((A-21), 0.4) + 0.07886 * (A-21);
} else {
beta = 0.1102 * (A-8.7);
}
/* Compute window coefficients */
for (i = 0; i <= (n-1)/2; i++) {
a = i - (n-1)/2;
w[i] = j0(beta * sqrt(1 - pow(a/nbar, 2))) / j0(beta);
w[n-i-1] = w[i];
}
}
```
注意:在C/C++代码中,需要包含`math.h`头文件,并使用`j0()`函数计算第一类零阶贝塞尔函数的值。
阅读全文
相关推荐


















