Beamforming Techniques  for MIMO Communications