A method for link adaptation, comprising: providing an error rate array having at least a channel condition value dimension and a transmission parameter dimension, wherein the error rate array includes at least four elements, and wherein each element corresponds to an error rate of a channel condition value/transmission parameter combination, wherein each transmission parameter corresponds to a combination of at least a modulation type and a transport block size, and wherein different transmission parameters correspond to different transport block sizes; selecting one of the channel condition values according to a current condition of a communications channel; selecting the one of the transmission parameter according to the provided error rate array and the selected channel condition value; and, transmitting data according to the selected transmission parameter; wherein selecting the transmission parameter includes calculating expected throughputs for each of the transmission parameters as a function of an error rate of the corresponding combination of at least a modulation type and a transport block size and a data transmission rate of the corresponding combination of at least a modulation type and a transport block size, and selecting the transmission parameter corresponding to the highest calculated expected throughput; and wherein providing the error rate array includes: initializing the elements according to simulated data; and adjusting, in real-time, the elements by transmitting data blocks at multiple channel condition values according to multiple transmission parameters, and determining whether the transmitted data blocks are successfully received by a recipient, and calculating moving averages of the adjusted elements. providing an error rate array having at least a channel condition value dimension and a transmission parameter dimension, wherein the error rate array includes at least four elements, and wherein each element corresponds to an error rate of a channel condition value/transmission parameter combination, wherein each transmission parameter corresponds to a combination of at least a modulation type and a transport block size, and wherein different transmission parameters correspond to different transport block sizes; selecting one of the channel condition values according to a current condition of a communications channel; selecting the one of the transmission parameter according to the provided error rate array and the selected channel condition value; and, transmitting data according to the selected transmission parameter; wherein selecting the transmission parameter includes calculating expected throughputs for each of the transmission parameters as a function of an error rate of the corresponding combination of at least a modulation type and a transport block size and a data transmission rate of the corresponding combination of at least a modulation type and a transport block size, and selecting the transmission parameter corresponding to the highest calculated expected throughput; and wherein providing the error rate array includes: initializing the elements according to simulated data; and adjusting, in real-time, the elements by transmitting data blocks at multiple channel condition values according to multiple transmission parameters, and determining whether the transmitted data blocks are successfully received by a recipient, and calculating moving averages of the adjusted elements. initializing the elements according to simulated data; and adjusting, in real-time, the elements by transmitting data blocks at multiple channel condition values according to multiple transmission parameters, and determining whether the transmitted data blocks are successfully received by a recipient, and transmitting data blocks at multiple channel condition values according to multiple transmission parameters, and determining whether the transmitted data blocks are successfully received by a recipient, and calculating moving averages of the adjusted elements.