Apply a digital filter (direct form II transposed): Difference between revisions
Content added Content deleted
(→{{header|Vlang}}: Rename "Vlang" in "V (Vlang)") |
(Added XPL0 example.) |
||
Line 1,877: | Line 1,877: | ||
}</syntaxhighlight> |
}</syntaxhighlight> |
||
{{out}} |
|||
<pre> |
|||
-0.15297399, -0.43525783, -0.13604340, 0.69750333, 0.65644469 |
|||
-0.43548245, -1.08923946, -0.53767655, 0.51704999, 1.05224975 |
|||
0.96185430, 0.69569009, 0.42435630, 0.19626223, -0.02783512 |
|||
-0.21172192, -0.17474556, 0.06925841, 0.38544587, 0.65177084 |
|||
</pre> |
|||
=={{header|XPL0}}== |
|||
<syntaxhighlight lang "XPL0">real A, B, Signal, Temp, Result(20); |
|||
int I, J; |
|||
[A:= [1.00000000, -2.77555756e-16, 3.33333333e-01, -1.85037171e-17]; |
|||
B:= [0.16666667, 0.5, 0.5, 0.16666667]; |
|||
Signal:= [ |
|||
-0.917843918645, 0.141984778794, 1.20536903482, 0.190286794412, |
|||
-0.662370894973, -1.00700480494, -0.404707073677, 0.800482325044, |
|||
0.743500089861, 1.01090520172, 0.741527555207, 0.277841675195, |
|||
0.400833448236, -0.2085993586, -0.172842103641, -0.134316096293, |
|||
0.0259303398477, 0.490105989562, 0.549391221511, 0.9047198589 ]; |
|||
Format(2, 8); |
|||
for I:= 0 to 20-1 do |
|||
[Temp:= 0.; |
|||
for J:= 0 to 4-1 do |
|||
if I-J >= 0 then |
|||
Temp:= Temp + B(J)*Signal(I-J); |
|||
for J:= 1 to 4-1 do |
|||
if I-J >= 0 then |
|||
Temp:= Temp - A(J)*Result(I-J); |
|||
Result(I):= Temp / A(0); |
|||
RlOut(0, Result(I)); |
|||
Text(0, if rem(I/5) = 4 then "^m^j" else ", "); |
|||
]; |
|||
]</syntaxhighlight> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |