In some implementations, Qmatk is a precoder matrix used by the access point at tone index k. In an example of a DL-MU transmission, Qmatk is a 16×16 matrix with the structure Qmatk=[q1kq2kq3k . . . q16k] where q1k, q2k, . . . , q16k are 16×1 column vectors, q1k through q4k are used for precoding streams 1 through 4 of user 1 at tone index k, q5k through q8k are used for precoding streams 5 through 8 of user 2 at tone index k, q9k through q12k are used for precoding streams 9 through 12 of user 3 at tone index k, and q13k through q16k are used for precoding streams 13 through 16 of user 4 at tone index k. The channel response of the wireless channel from user 1 to the access point at tone index k is represented by Hu1,k, Hu2,k, Hu3,k, and Hu4,k matrices each of size 4×16. Qmatk, being the precoder matrix ensures that, in some embodiments, the columns of Qmatk, corresponding to one user are orthogonal to the channel of the other users. As an example, each of q5k through q16k (e.g., columns of Qmat corresponding to users 2, 3, and 4) are orthogonal to the rows of Hu1,k. The access point transmits the 16×1 data vector at tone index k, Xk=[x1u1 x2u1 x3u1 x4x1 x1u2 x2u2 . . . x16u16]T. X contains data for 4 streams for 4 users and xpuq denotes the data sent on the pth stream to user q. In this example, p and q range from 1 to 4. User 1 receives Yu1,k=Hu1,k*Qmatk*Xk at tone index k.