A method of performing channel estimation in a multiple-input-multiple-output, MIMO, communication system comprising a downlink device and an uplink device arranged to communicate over a communication channel, the method comprising: at the uplink device: analysing a first channel vector representing channel gains between the downlink device and a first antenna of the uplink device in the angular domain to identify a set of angular domain support points each indicating a respective element of the first channel vector in the angular domain; generating from the set of angular domain support points a value vector containing elements of the first channel vector in the angular domain representing the largest channel gains; feeding back from the uplink device to the downlink device an indication of the value vector; at the downlink device: analysing a second channel vector representing channel gains between the downlink device and a second antenna of the uplink device in the angular domain to identify the same set of angular domain support points; generating from the set of angular domain support points a transmit steering matrix; and generating an estimate of the first channel vector from the indication of the value vector fed back from the uplink device and the generated transmit steering matrix. at the uplink device: analysing a first channel vector representing channel gains between the downlink device and a first antenna of the uplink device in the angular domain to identify a set of angular domain support points each indicating a respective element of the first channel vector in the angular domain; generating from the set of angular domain support points a value vector containing elements of the first channel vector in the angular domain representing the largest channel gains; feeding back from the uplink device to the downlink device an indication of the value vector; analysing a first channel vector representing channel gains between the downlink device and a first antenna of the uplink device in the angular domain to identify a set of angular domain support points each indicating a respective element of the first channel vector in the angular domain; generating from the set of angular domain support points a value vector containing elements of the first channel vector in the angular domain representing the largest channel gains; feeding back from the uplink device to the downlink device an indication of the value vector; at the downlink device: analysing a second channel vector representing channel gains between the downlink device and a second antenna of the uplink device in the angular domain to identify the same set of angular domain support points; generating from the set of angular domain support points a transmit steering matrix; and generating an estimate of the first channel vector from the indication of the value vector fed back from the uplink device and the generated transmit steering matrix. analysing a second channel vector representing channel gains between the downlink device and a second antenna of the uplink device in the angular domain to identify the same set of angular domain support points; generating from the set of angular domain support points a transmit steering matrix; and generating an estimate of the first channel vector from the indication of the value vector fed back from the uplink device and the generated transmit steering matrix.