- added
git-svn-id: http://moon:8086/svn/matlab/trunk@157 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
Executable
+37
@@ -0,0 +1,37 @@
|
||||
function [w, idx] = wkaiser(n, b)
|
||||
|
||||
% function [w, idx] = wkaiser(n, b)
|
||||
|
||||
k1 = 1.0/besselizero(b);
|
||||
k2 = 1 - mod(n, 2);
|
||||
ende = fix((n + 1)/2);
|
||||
|
||||
idx = zeros(n, 1);
|
||||
% Calculate window coefficients
|
||||
for k=0:ende-1,
|
||||
tmp = (2*k + k2) / (n - 1.0);
|
||||
tmp2 = k1 * besselizero(b*sqrt(1.0 - tmp*tmp));
|
||||
mm = ende-(mod(not(k2), 2))+k+1;
|
||||
nn = ende-k;
|
||||
w(mm) = tmp2;
|
||||
w(nn) = tmp2;
|
||||
idx(nn) = idx(nn) + 1;
|
||||
idx(mm) = idx(mm) + 1;
|
||||
end;
|
||||
|
||||
function sum = besselizero(x)
|
||||
BIZ_EPSILON = 1E-21; % Max error acceptable
|
||||
sum = 1.0;
|
||||
u = 1.0;
|
||||
halfx = x/2.0;
|
||||
n = 1;
|
||||
while(1)
|
||||
temp = halfx/n;
|
||||
u = u * temp * temp;
|
||||
sum = sum + u;
|
||||
n = n + 1;
|
||||
if (u < (BIZ_EPSILON * sum))
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user