A base station for communicating with multiple groups of wireless communication devices, comprising: a processor; memory in electronic communication with the processor; instructions stored in the memory, the instructions being executable to: determine a number of wireless communication devices; split the number of wireless communication devices into groups; determine a precoding matrix for each group; and transmit a beamformed signal to each group using the precoding matrix for each group; wherein determining the precoding matrix for each group comprises: determining a group channel for a current group; determining a complement group channel; determining a complement group channel null space; determining a client channel for each wireless communication device in the current group; and determining a precoding matrix for the current group based on the client channel and the complement group channel null space for each wireless communication device; wherein determining the complement group channel null space is accomplished according to an equation U ′, S ′, V ′ = svd H k ′, wherein H k ′ is the complement group channel, U' includes left singular vectors of H k ′, S' are singular values of H k ′, V' includes right singular vectors of H k ′, svd() is a singular value decomposition function and the complement group channel null space V n comprises the last N tx -(N rxt - N rxk) columns of V', wherein N tx is a number of base station transmitters, N rxt is a total number of wireless communication device receivers and N rxk is a total number of receivers in a group k; wherein determining the precoding matrix for the current group is accomplished according to equations [U m,S m,V m] = svd(H mk V n) and W k:, m = V m:, 1 S m − 1 1,1, wherein H mk is the client channel, V n is the complement group channel null space, U m includes left singular vectors of H mk V n, S m are singular values of H mk V n, V m includes right singular vectors of H mk V n, svd() is a singular value decomposition function, W k is the precoding matrix for a group k and m is an index number; and wherein the precoding matrix for the current group is applied to a first part of a preamble, and wherein the instructions are further executable to determine a second precoding matrix for the current group that is applied to a second part of the preamble. a processor; memory in electronic communication with the processor; instructions stored in the memory, the instructions being executable to: determine a number of wireless communication devices; split the number of wireless communication devices into groups; determine a precoding matrix for each group; and transmit a beamformed signal to each group using the precoding matrix for each group; determine a number of wireless communication devices; split the number of wireless communication devices into groups; determine a precoding matrix for each group; and transmit a beamformed signal to each group using the precoding matrix for each group; wherein determining the precoding matrix for each group comprises: determining a group channel for a current group; determining a complement group channel; determining a complement group channel null space; determining a client channel for each wireless communication device in the current group; and determining a precoding matrix for the current group based on the client channel and the complement group channel null space for each wireless communication device; determining a group channel for a current group; determining a complement group channel; determining a complement group channel null space; determining a client channel for each wireless communication device in the current group; and determining a precoding matrix for the current group based on the client channel and the complement group channel null space for each wireless communication device; wherein determining the complement group channel null space is accomplished according to an equation U ′, S ′, V ′ = svd H k ′, wherein H k ′ is the complement group channel, U' includes left singular vectors of H k ′, S' are singular values of H k ′, V' includes right singular vectors of H k ′, svd() is a singular value decomposition function and the complement group channel null space V n comprises the last N tx -(N rxt - N rxk) columns of V', wherein N tx is a number of base station transmitters, N rxt is a total number of wireless communication device receivers and N rxk is a total number of receivers in a group k; wherein determining the precoding matrix for the current group is accomplished according to equations [U m,S m,V m] = svd(H mk V n) and W k:, m = V m:, 1 S m − 1 1,1, wherein H mk is the client channel, V n is the complement group channel null space, U m includes left singular vectors of H mk V n, S m are singular values of H mk V n, V m includes right singular vectors of H mk V n, svd() is a singular value decomposition function, W k is the precoding matrix for a group k and m is an index number; and wherein the precoding matrix for the current group is applied to a first part of a preamble, and wherein the instructions are further executable to determine a second precoding matrix for the current group that is applied to a second part of the preamble.