A computationally efficient, adaptive multistage Wiener filter employs two
modules, a linear filter module that operates at the input data rate and
an update module that operates at a plurality of rates but performs many
calculations at only the update rate. This filter is especially useful
when the channel conditions vary slowly so that the filter's update rate
can be considerably less than the input data rate. Separating the
calculations, preferably performing appropriate calculations at different
rates and preferably substituting scalar operations for vector operations
can provide improved computational efficiency while maintaining high
levels of performance.