A MIMO communication method for performing MIMO communication between a base station including a plurality of antennas, and a plurality of terminals accommodated in the base station, the method comprising: in the base station, dividing the plurality of terminals into a first and a second group, and assigning orthogonal codes with each other to the respective groups, spreading transmission data to the plurality of terminals with the assigned codes, multiplying data obtained by the spreading by a predetermined pre-coding matrix, obtaining a channel matrix representing channels between the plurality of antennas and the plurality of terminals, multiplying data obtained by the multiplying by the pre-coding matrix by a complex conjugate transpose matrix of the channel matrix, and transmitting data obtained by the multiplying by the complex conjugate transpose matrix from the plurality of antennas, in each of the plurality of terminals, receiving signals transmitted from the plurality of antennas of the base station, inversely spreading the received signals using an orthogonal code assigned to the own terminal so as to decode transmission data to the own terminal, wherein in the assigning the orthogonal codes with each other to the first and the second group, assigning a same one pair of codes to terminals in the same group, as data for each of the terminals, preparing first data obtained by spreading with a code having a spread length of n (n: an integer of 2 or more) out of the same one pair of codes, and multiplying by a first amplitude adjustment factor, second data obtained by spreading with a code having a spread length of 2·n, and multiplying by a second amplitude adjustment factor, and third data obtained by spreading with a code having a spread length of 2·2·n, and multiplying by a third amplitude adjustment factor, multiplying a sum of the first to the third data with one another by the pre-coding matrix, and in each of the plurality of terminals, receiving the signal transmitted from the plurality of antennas of the base station, inversely spreading the reception signal with a longest code out of the orthogonal codes assigned to the own terminal to obtain the third data, spreading the obtained third data with the code having the spread length of 2·2·n again, subtracting a multiplication result by the third amplitude adjustment factor from the first reception signal, assigning the obtained data to subtraction reception data, inversely spreading the subtraction reception data by a code having the spread length of 2·n to obtain the second data, and spreading the obtained second data with the code having the spread length of 2·n again, subtracting a multiplication result by the second amplitude adjustment factor from the subtraction reception data, and inversely spreading obtained data with a code having the spread length of n to obtain the first data. in the base station, dividing the plurality of terminals into a first and a second group, and assigning orthogonal codes with each other to the respective groups, spreading transmission data to the plurality of terminals with the assigned codes, multiplying data obtained by the spreading by a predetermined pre-coding matrix, obtaining a channel matrix representing channels between the plurality of antennas and the plurality of terminals, multiplying data obtained by the multiplying by the pre-coding matrix by a complex conjugate transpose matrix of the channel matrix, and transmitting data obtained by the multiplying by the complex conjugate transpose matrix from the plurality of antennas, in each of the plurality of terminals, receiving signals transmitted from the plurality of antennas of the base station, inversely spreading the received signals using an orthogonal code assigned to the own terminal so as to decode transmission data to the own terminal, wherein in the assigning the orthogonal codes with each other to the first and the second group, assigning a same one pair of codes to terminals in the same group, as data for each of the terminals, preparing first data obtained by spreading with a code having a spread length of n (n: an integer of 2 or more) out of the same one pair of codes, and multiplying by a first amplitude adjustment factor, second data obtained by spreading with a code having a spread length of 2·n, and multiplying by a second amplitude adjustment factor, and third data obtained by spreading with a code having a spread length of 2·2·n, and multiplying by a third amplitude adjustment factor, multiplying a sum of the first to the third data with one another by the pre-coding matrix, and in each of the plurality of terminals, receiving the signal transmitted from the plurality of antennas of the base station, inversely spreading the reception signal with a longest code out of the orthogonal codes assigned to the own terminal to obtain the third data, spreading the obtained third data with the code having the spread length of 2·2·n again, subtracting a multiplication result by the third amplitude adjustment factor from the first reception signal, assigning the obtained data to subtraction reception data, inversely spreading the subtraction reception data by a code having the spread length of 2·n to obtain the second data, and spreading the obtained second data with the code having the spread length of 2·n again, subtracting a multiplication result by the second amplitude adjustment factor from the subtraction reception data, and inversely spreading obtained data with a code having the spread length of n to obtain the first data.