Dear all, I have a MIMO-OFDM system, like 802.11n. I assume full CSI in both TX and RX and my goal is to obtain in the receiver a per spatial stream and per OFDM subcarrier SNR estimation in order to perform a fast link adaptation algorithm, i.e. I want to compute SNR[i][k] where i=1..Nss (Nss: number of spatial streams) and j=1..Nsc (Nsc: number of OFDM subcarriers). Since I assume full CSI in both TX and RX the optimum MIMO architecture is to perform the svd of the channel matrix H in order to obtain the steering matrixs in TX and RX. Notice that this has to be done per OFDM subcarrier (there is one H per each OFDM subcarrier). What boggles my mind is that when I observe the SNR per spatial stream I obtain that sometimes (for some subcarriers) the SNR of the spatial stream associated with the highest eigenvalue of the channel is not the biggest one, and the reason for that is that I "colour" the noise at the receiver. Is the previous possible or I am making some mistake ? Here is how I compute the SNR per spatial stream and OFDM subcarrier. [U,D,V] = svd(H); %where H is the MIMO channel matrix of dimensions Nrx*Ntx (antennas in RX and TX) and for a certain OFDM subcarrier Then the transmitter sends in the channel: x = V*s; %where s is a vector containing the information symbols And the receiver process the received symbols as: y = U'*r; %where s is a vector containing the received symbols Then from the vector y that I have to estimate the SNR, i.e. each component of y contains one spatial stream. First I obtain the power of noise per OFDM subcarrier. This is basically obtained like: Noise_Power_per_sc = Tn*BW_sc*Nf where: Tn: Is the temperature of noise in the receiver BW_sc: Is the BW occupied by one OFDM subcarrier Nf: Is the noise figure in the receiver All the previous quantities are linear (not dBs) Now I generate a noise vector: n = sqrt(Noise_Power_per_sc)*ones(Nrx,1); Here I have a question and is that I generate a vector containing the power of noise per each receiver antenna, I do not generate random noise samples but just the power of noise because this is what the receiver would use to do the SNR estimation. Now if I assume that the same power was allocated to each spatial stream, I can compute the received vector as: H_eff = U'*H*V; r = sqrt(TX_power/Nss)*H_eff*ones(Ntx,1) + U'*n; And here I have a question that is whether is correct to assume spatially correlated noise by multiplying by U in the receiver. Then the SNR of spatial stream can simply be computed like: a = sqrt(TX_power/Nss)*H_eff*ones(Ntx,1); snr(i) = abs(a(i) / (r(i) - a(i)))^2 I have checked that the power received in the spatial stream associated with the maximum eigenvalue is always above all the others. The problem is that sometimes the noise is also above all the others because we multiply the noise vector by U', and then I observe a lower SNR for the spatial stream associated with the highest eigenvalue. Is this correct ? Regards Daniel

# Computing per stream SNR in a full CSI MIMO-OFDM system for fast link adaptation

Started by ●May 15, 2008

Reply by ●May 16, 20082008-05-16

On May 15, 6:00�pm, Dani Camps <danicamp...@gmail.com> wrote:> Dear all, > > I have a MIMO-OFDM system, like 802.11n. I assume full CSI in both TX > and RX and my goal is to obtain in the receiver a per spatial stream > and per OFDM subcarrier SNR estimation in order to perform a fast link > adaptation algorithm, i.e. I want to compute SNR[i][k] where i=1..Nss > (Nss: number of spatial streams) and j=1..Nsc (Nsc: number of OFDM > subcarriers). > > Since I assume full CSI in both TX and RX the optimum MIMO > architecture is to perform the svd of the channel matrix H in order to > obtain the steering matrixs in TX and RX. �Notice that this has to be > done per OFDM subcarrier (there is one H per each OFDM subcarrier). > > What boggles my mind is that when I observe the SNR per spatial stream > I obtain that sometimes (for some subcarriers) the SNR of the spatial > stream associated with the highest eigenvalue of the channel is not > the biggest one, and the reason for that is that I "colour" the noise > at the receiver. Is the previous possible or I am making some > mistake ? > > Here is how I compute the SNR per spatial stream and OFDM subcarrier. > > [U,D,V] = svd(H); %where H is the MIMO channel matrix of dimensions > Nrx*Ntx (antennas in RX and TX) and for a certain OFDM subcarrier > > Then the transmitter sends in the channel: > > x = V*s; %where s is a vector containing the information symbols > > And the receiver process the received symbols as: > > y = U'*r; %where s is a vector containing the received symbols > > Then from the vector y that I have to estimate the SNR, i.e. each > component of y contains one spatial stream. > > First I obtain the power of noise per OFDM subcarrier. This is > basically obtained like: > > Noise_Power_per_sc = Tn*BW_sc*Nf > > where: > Tn: Is the temperature of noise in the receiver > BW_sc: Is the BW occupied by one OFDM subcarrier > Nf: Is the noise figure in the receiver > > All the previous quantities are linear (not dBs) > > Now I generate a noise vector: > > n = sqrt(Noise_Power_per_sc)*ones(Nrx,1); > > Here I have a question and is that I generate a vector containing the > power of noise per each receiver antenna, I do not generate random > noise samples but just the power of noise because this is what the > receiver would use to do the SNR estimation. > > Now if I assume that the same power was allocated to each spatial > stream, I can compute the received vector as: > > H_eff = U'*H*V; > r = sqrt(TX_power/Nss)*H_eff*ones(Ntx,1) + U'*n; > > And here I have a question that is whether is correct to assume > spatially correlated noise by multiplying by U in the receiver. > > Then the SNR of spatial stream can simply be computed like: > > a = sqrt(TX_power/Nss)*H_eff*ones(Ntx,1); > snr(i) = abs(a(i) / (r(i) - a(i)))^2 > > I have checked that the power received in the spatial stream > associated with the maximum eigenvalue is always above all the others. > The problem is that sometimes the noise is also above all the others > because we multiply the noise vector by U', and then I observe a lower > SNR for the spatial stream associated with the highest eigenvalue. Is > this correct ? > > Regards > > DanielHi all, I think I found the solution. What I am doing is wrong, I do not have to multiply the noise by the receiver steering matrix when estimating the SNR, i.e. n' = U'*n. The reason is that I am not working with instantaneous noise samples but I just want to compute the SNR, and for that I need to consider the statistics of the noise. Now, if n is a complex gaussian random vector and U is a unitary matrix, i.e. U'*U = I, then the statistics of U'*n and n are the same. Regards Daniel