- added
git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
Executable
+33
@@ -0,0 +1,33 @@
|
||||
% IIRTPC generiert IIR-Tiefpass Koeffizienten für geradzahlige Ordnung
|
||||
% [b,a] = iirtpc(fa,fg,Q,N)
|
||||
%
|
||||
% fa : Abtastfrequenz [Hz]
|
||||
% fg : Grenzfrequenz [Hz] fg <= fa/2
|
||||
% Q : Polgüte (Resonanz)
|
||||
% N : Filterordnung (durch zwei teilbar)
|
||||
%
|
||||
function [b,a] = iirtpc(fa,fg,Q,N)
|
||||
|
||||
if (rem(N,2) > 0)
|
||||
error('Filterordnung muss z.Zt. noch durch zwei teilbar sein!');
|
||||
end;
|
||||
|
||||
sn = sin(2*pi*fg/fa);
|
||||
cs = cos(2*pi*fg/fa);
|
||||
ak = ones(N/2,3);
|
||||
bk = ones(N/2,3);
|
||||
a = 1;
|
||||
b = 1;
|
||||
|
||||
for n = 1:N/2,
|
||||
Qp = 1/(2*sin(pi*(n-0.5)/N));
|
||||
alpha = sn/(2*Q*Qp);
|
||||
a0 = 1+alpha;
|
||||
ak(n,2) = -2*cs/a0;
|
||||
ak(n,3) = (1-alpha)/a0;
|
||||
bk(n,1) = 0.5*(1-cs)/a0;
|
||||
bk(n,2) = (1-cs)/a0;
|
||||
bk(n,3) = 0.5*(1-cs)/a0;
|
||||
a = conv(a,ak(n,(1:3)));
|
||||
b = conv(b,bk(n,(1:3)));
|
||||
end;
|
||||
Reference in New Issue
Block a user