Adaptive filtering algorithms for quaternion-valued signals