Apply a digital filter (direct form II transposed): Difference between revisions
Content added Content deleted
(→{{header|ALGOL 68}}: Tweak) |
(→{{header|ALGOL 68}}: check array bounds) |
||
Line 120: | Line 120: | ||
# the lower bounds of a, b, signal and result must all be equal # |
# the lower bounds of a, b, signal and result must all be equal # |
||
PROC filter = ( []REAL a, b, signal, REF[]REAL result )VOID: |
PROC filter = ( []REAL a, b, signal, REF[]REAL result )VOID: |
||
IF LWB a /= LWB b OR LWB a /= LWB signal OR LWB a /= LWB result THEN |
|||
⚫ | |||
print( ( "Array lower bounds must be equal for filter", newline ) ); |
|||
stop |
|||
⚫ | |||
FOR i FROM LWB result TO UPB result DO result[ i ] := 0 OD; |
FOR i FROM LWB result TO UPB result DO result[ i ] := 0 OD; |
||
FOR i FROM LWB signal TO UPB signal DO |
FOR i FROM LWB signal TO UPB signal DO |
||
Line 132: | Line 135: | ||
result[ i ] := tmp / a[ LWB a ] |
result[ i ] := tmp / a[ LWB a ] |
||
OD |
OD |
||
FI # filter # ; |
|||
[ 4 ]REAL a := []REAL( 1, -2.77555756e-16, 3.33333333e-01, -1.85037171e-17 ); |
[ 4 ]REAL a := []REAL( 1, -2.77555756e-16, 3.33333333e-01, -1.85037171e-17 ); |
||
[ 4 ]REAL b := []REAL( 0.16666667, 0.5, 0.5, 0.16666667 ); |
[ 4 ]REAL b := []REAL( 0.16666667, 0.5, 0.5, 0.16666667 ); |