matlab taylorwin(n,nbar,sll)加窗函数 c/c++实现奇数阶*
时间: 2024-05-08 20:16:05 浏览: 11
taylorwin函数的实现:
```
function w = taylorwin(n, nbar, sll)
% TAYLORWIN Create a Taylor window of length n with sidelobe level sll
% at frequency nbar.
% Usage: w = taylorwin(n, nbar, sll)
if mod(n, 2) == 0
error('Window length must be odd.');
end
a = -20*log10(sll);
m = (n-1)/2;
w = zeros(1, n);
for i = 0:m
w(m+1+i) = w(m+1-i) = taylor(i, m, a/2);
end
w = w / max(w);
function y = taylor(n, m, a)
% Compute the n-th Taylor coefficient with m coefficients and sidelobe
% level a.
% Reference: S. Lawrence Marple, Jr. "Digital Spectral Analysis with
% Applications", Prentice Hall, 1987, pp. 96-97.
if n == 0
y = 1;
elseif n == m
y = (-1)^n * (a/20)^2;
else
y = (-1)^n * (a/20)^2 * prod((1-(n/m)^2):(1+(n/m)^2))/(2*n);
end
```
其中taylor函数用于计算泰勒系数,w为输出的窗函数。
使用方法:
```
n = 21; % 窗口长度
nbar = 0.3; % 频率
sll = 40; % 边瓣级别
w = taylorwin(n, nbar, sll);
```
其中n为奇数,nbar为窗口的中心频率,sll为窗口边瓣级别。函数返回的w为大小为n的窗函数。