A data transmission method, comprising: determining, by a transmitting end, a first precoding matrix and a second precoding matrix, the first precoding matrix being selected from a predefined first codebook, the second precoding matrix being acquired on the basis of Channel State information, CSI; performing, by the transmitting end, precoding processing on a data stream in accordance with the first precoding matrix and the second precoding matrix; performing, by the transmitting end, precoding processing on a pilot signal in accordance with the second precoding matrix; transmitting, by the transmitting end, the data stream and the pilot signal acquired after the precoding processing to a receiving end; and wherein the step of determining, by the transmitting end, the first precoding matrix comprises: determining, by the transmitting end, dimensions of the first precoding matrix in accordance with a quantity of the data streams; selecting, by the transmitting end, a first code book which comprises precoding matrices each having dimensions same to the first precoding matrix; and with respect to each Resource Element, RE, selecting, by the transmitting end, one precoding matrix from the selected first code book as the first precoding matrix for the RE in accordance with: (i) a serial number of the RE; or (ii) a serial number of a Resource Block, RB, to which the RE belongs; or (iii) a serial number of a data symbol vector comprised in the data stream transmitted on the RE. determining, by a transmitting end, a first precoding matrix and a second precoding matrix, the first precoding matrix being selected from a predefined first codebook, the second precoding matrix being acquired on the basis of Channel State information, CSI; performing, by the transmitting end, precoding processing on a data stream in accordance with the first precoding matrix and the second precoding matrix; performing, by the transmitting end, precoding processing on a pilot signal in accordance with the second precoding matrix; transmitting, by the transmitting end, the data stream and the pilot signal acquired after the precoding processing to a receiving end; and wherein the step of determining, by the transmitting end, the first precoding matrix comprises: determining, by the transmitting end, dimensions of the first precoding matrix in accordance with a quantity of the data streams; selecting, by the transmitting end, a first code book which comprises precoding matrices each having dimensions same to the first precoding matrix; and with respect to each Resource Element, RE, selecting, by the transmitting end, one precoding matrix from the selected first code book as the first precoding matrix for the RE in accordance with: (i) a serial number of the RE; or (ii) a serial number of a Resource Block, RB, to which the RE belongs; or (iii) a serial number of a data symbol vector comprised in the data stream transmitted on the RE. determining, by the transmitting end, dimensions of the first precoding matrix in accordance with a quantity of the data streams; selecting, by the transmitting end, a first code book which comprises precoding matrices each having dimensions same to the first precoding matrix; and with respect to each Resource Element, RE, selecting, by the transmitting end, one precoding matrix from the selected first code book as the first precoding matrix for the RE in accordance with: (i) a serial number of the RE; or (ii) a serial number of a Resource Block, RB, to which the RE belongs; or (iii) a serial number of a data symbol vector comprised in the data stream transmitted on the RE.