- “fir1” normalizes the coefficients as described here . Adding another argument to function changes this: fir1(order,Fc,'low',rectwin(L),'noscale').
- The Hd_n vector has coefficients can be corrected by changing (sin((n-Tau)*Fc)) to (sin(pi*(n-Tau)*Fc)). The lack of pi expands the area under curve.
- Hd_n(Tau+1) = Fc corrects the magnitude at center frequency.
Comparing FIR1 bultiin function for generating coefficients with my Function.
1 view (last 30 days)
Ahsen Noor Subhopoto on 11 Jul 2019
Hi, I am trying to create my own FIR1 by using Window functions but somehow I am not getting the exact results. I have shared the codes with corresponding outputs here;
%Window function is Rectangl, W(n) = 1;%
order = 10;
L = order + 1; %length of a Window
Tau = ceil((order-1)/2); % Tau = 5
Fc = 0.99 %for simplicity that is close to 1
Rectangl = fir1(order,Fc,'low',rectwin(L));
n = 0:1:order;
Hd_n = (sin((n-Tau)*Fc))./(pi*(n-Tau));
Hd_n(Tau+1) = Fc/pi;
Both outputs are different. Like, Hd_n(1) = -0.0619, whereas Reactangl(1) = 0.0099.
Am I doing something wrong ? Your suggestions and debugging will be helpful for me.
Kaashyap Pappu on 26 Jul 2019
The difference between the 2 filter coefficients arises for the following reasons: