1. A method of generating a number of candidate beamforming vectors for transmission of data over a wireless medium in a wireless communication system, the method comprising: determining the number (N) of transmitter antennas; determining the number (n) of candidate beamforming vectors to be constructed as an algebraic function of N; providing a Fourier transform matrix W comprising (n+1) rows and (n+1) columns; selecting N rows from the Fourier transform matrix W; and generating an abridged matrix for a codebook using the selected N rows, wherein each column of the abridged matrix is configured to be used as a candidate beamforming vector for transmission of a data signal, such that the abridged matrix comprises a N×n sub-matrix of the Fourier transform matrix W, wherein determining the number (n) of candidate beamforming vectors to be constructed further includes determining n as n=2 [log 2 N]+2 , where [ ] is the floor operation that returns the largest integer that is no larger than the argument.