A method comprising: determining a beamforming matrix for a transmitting device to use to precode data for transmission to a receiving device via a multicarrier MIMO channel, wherein determining is performed in said receiving device, said beamforming matrix comprising a plurality of columns; transmitting information, from said receiving device to said transmitting device, that identifies said beamforming matrix; receiving dedicated pilot signals and data signals from said transmitting device, via said multicarrier MIMO channel, that were supposed to have been precoded by said transmitting device using said beamforming matrix, said dedicated pilot signals carrying known information; and processing said dedicated pilots to validate whether said transmitting device actually used said beamforming matrix to precode said dedicated pilot signals and said data signals; wherein processing said dedicated pilots to validate whether said transmitting device actually used said beamforming matrix to precode said dedicated pilot signals and said data signals includes using maximum likelihood detection to process said dedicated pilots; said method being characterised by: using maximum likelihood detection to process said dedicated pilots includes performing a reduced complexity codebook search that includes a column wise search as follows: v i * = arg min v i ∈ Codebook ‖ Y i − Hv i ‖ 2 2 i = 1,..., N s where v i * is the estimate of the i th column of the beamforming matrix actually used by the transmitting device, Y i is the i th column of the received dedicated pilot signal Y, H is the channel matrix, and Codebook is the codebook of possible beamforming matrices, and N s is the number of spatial streams. determining a beamforming matrix for a transmitting device to use to precode data for transmission to a receiving device via a multicarrier MIMO channel, wherein determining is performed in said receiving device, said beamforming matrix comprising a plurality of columns; transmitting information, from said receiving device to said transmitting device, that identifies said beamforming matrix; receiving dedicated pilot signals and data signals from said transmitting device, via said multicarrier MIMO channel, that were supposed to have been precoded by said transmitting device using said beamforming matrix, said dedicated pilot signals carrying known information; and processing said dedicated pilots to validate whether said transmitting device actually used said beamforming matrix to precode said dedicated pilot signals and said data signals; wherein processing said dedicated pilots to validate whether said transmitting device actually used said beamforming matrix to precode said dedicated pilot signals and said data signals includes using maximum likelihood detection to process said dedicated pilots; said method being characterised by: using maximum likelihood detection to process said dedicated pilots includes performing a reduced complexity codebook search that includes a column wise search as follows: v i * = arg min v i ∈ Codebook ‖ Y i − Hv i ‖ 2 2 i = 1,..., N s where v i * is the estimate of the i th column of the beamforming matrix actually used by the transmitting device, Y i is the i th column of the received dedicated pilot signal Y, H is the channel matrix, and Codebook is the codebook of possible beamforming matrices, and N s is the number of spatial streams. using maximum likelihood detection to process said dedicated pilots includes performing a reduced complexity codebook search that includes a column wise search as follows: v i * = arg min v i ∈ Codebook ‖ Y i − Hv i ‖ 2 2 i = 1,..., N s where v i * is the estimate of the i th column of the beamforming matrix actually used by the transmitting device, Y i is the i th column of the received dedicated pilot signal Y, H is the channel matrix, and Codebook is the codebook of possible beamforming matrices, and N s is the number of spatial streams.