Hallo, Bin grad dabei einen FIR Filter in Octave zu modellieren. fir.m
1 | function [fw,h]=fir(M,h,fs,step) |
2 | %Autor: Tobias Markus |
3 | %FIR Filter with M koeffizients |
4 | %fs is the sampling frequency and |
5 | %h is the koefficent vector must have the size |
6 | %of M. And step defines the steps between 0Hz and fs |
7 | n=0; |
8 | m=0; |
9 | sum =0; |
10 | f=[0:step:fs/2]; |
11 | hz=[]; |
12 | % Calculating the transfer function |
13 | while m < (fs/(2*step)+1) |
14 | while n < M |
15 | sum = sum +h(n+1)*exp(-j*n*(2*pi*f(m+1))/fs); |
16 | n=n+1; |
17 | end
|
18 | hz(m+1)= sum; |
19 | sum=0; |
20 | m=m+1; |
21 | n=0; |
22 | end
|
23 | h=hz; |
24 | fw=f; |
25 | endfunction
|
Hauptprogramm:
1 | h=[]; |
2 | h(1)=-0.045; |
3 | h(2)=0; |
4 | h(3)=0.075; |
5 | h(4)=0.159; |
6 | h(5)=0.225; |
7 | h(6)=0.25; |
8 | h(7)=0.225; |
9 | h(8)=0.159; |
10 | h(9)=0.075 |
11 | h(10)=0 |
12 | h(11)=-0.045 |
13 | fs=16000; |
14 | M=11; |
15 | step=10; |
16 | f=[]; |
17 | w=[]; |
18 | [f,w]=fir(M,h,fs,step); |
19 | plot(f,abs(w)); |
Wenn ich nun den Filter plotten lasse habe ich Verstärkungen größer eins. Wie kann das sein hab ich einen Fehler gemacht?