Changeset 9465

Show
Ignore:
Timestamp:
07/22/09 00:13:50 (4 years ago)
Author:
hvolos
Message:

both rx antennas are used

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ossiedev/branches/hvolos/components/MIMODec/MIMODec.cpp

    r9452 r9465  
    169169        */ 
    170170 
    171         cx_double r1; 
    172         cx_double r2; 
     171        cx_double r1,r1b; 
     172        cx_double r2,r2b; 
    173173        cx_mat rx_symbols(((Data_length-NH)/2),1); 
    174174        short int j=0; 
    175175        //std::cout<<"Decode"<<std::endl; 
    176176        std::cout<<"Hdec="<<H; 
     177         
    177178        for (short int i=NH; i<Data_length;i+=4){ 
    178179                r1=cx_double((*I_in)[i],(*Q_in)[i]); 
     180                r1b=cx_double((*I_in)[i+1],(*Q_in)[i+1]); 
    179181                r2=cx_double((*I_in)[i+2],(*Q_in)[i+2]); 
     182                r2b=cx_double((*I_in)[i+3],(*Q_in)[i+3]); 
    180183               // std::cout<<((Data_length-NH)/2)<<" i:"<<i<<" j"<<j<<std::endl; 
    181184                rx_symbols(j,0)=r1*conj(H(0,0))+conj(r2)*H(0,1); 
    182                 rx_symbols(j+1,0)=r1*conj(H(0,1))-conj(r2)*H(0,0);                                             
     185                rx_symbols(j+1,0)=r1*conj(H(0,1))-conj(r2)*H(0,0); 
     186                rx_symbols(j,0)+=r1b*conj(H(1,0))+conj(r2b)*H(1,1); 
     187                rx_symbols(j+1,0)+=r1b*conj(H(1,1))-conj(r2b)*H(1,0); 
     188                                           
    183189                j+=2; 
    184190        }  
    185          
     191        double scale=1; 
    186192        for (short int i=0; i<((Data_length-NH)/2);i++){ 
    187         I_out[i]=(CORBA::Short)real(rx_symbols(i,0)); 
    188         Q_out[i]=(CORBA::Short)imag(rx_symbols(i,0)); 
     193         
     194        if ( (real(rx_symbols(i,0))>30000)||(imag(rx_symbols(i,0))>30000)) 
     195        scale=20; 
     196        else 
     197        scale=1; 
     198         
     199         
     200        I_out[i]=(CORBA::Short)(real(rx_symbols(i,0))/scale); 
     201        Q_out[i]=(CORBA::Short)(imag(rx_symbols(i,0))/scale); 
    189202        std::cout<<"Symbol"<<rx_symbols(i,0)<<std::endl; 
    190203        std::cout<<"I:"<<I_out[i]<<"Q:"<<Q_out[i]<<std::endl;