From: Bogdan Mikhailets on 5 Aug 2006 12:49 I have the question. I need to test BER of my coherent correlative type GMSK detector. But to simplify understanding I first need to consider my detector for detection of MSK signal which I get as output of my GMSk modulator with BT=infinity( say 10000). I use coherent orthogonal FSK type detector, so I know I lose 3dB in SNR in comparison with the QPSK-like detector for MSK signals. The method I want to try is detection of MSK using its I/Q components. At the output of GMSK(BT=infinity) modulator I have MSK I/Q signals. Than I add noise to complex signal S=I+j*Q, and at the demodulator take real and imaginary parts of Snoisy to get Inoisy and Qnoisy. At the detector side I have 2 reference I/Q signals: one for '1' and the other for '-1'. At the detector I bring I/Q(noisy) signal corresponding to each bit interval to the same phase. Then using ML correlative type detecion I make the decision and mapping to the maximum signal in the arm. I do this by the operations of scalar product Inoisy*Iref[i]+Qnoisy*Qref[i],i=1..2 and integration over one bit interval. The resulting BER is strongly worse then the BER I got with the second( as I think equivalent) detector. Here I get bandpass signal as output of modulator s. Then I add noise. I consider the fact that the first case was adding noise to a complex signal, and in the second- to the real signal. At the detector I use 2 bandpass signals sref as reference signals corresponding to '1' and '-1'. I also use correlation type detector getting first scalar products in the 2 arms of detector Snoisy*Sref[i],i=1..2 and then integration and the rest is the same as the previous scenario. But the BER agrees with theory ( for FSK coherent orthogonal detection). Please explain why these 2 detection schemes are inequivalent, or why I get such bad results in the first case although it seems theory allows me to do such vector representation with I/Q coordinates. Please help. My matlab code has one common m-file 1. gmsk modulator and 2. different file for adding noise 3. different detectors. 2 . 1st case SNRset=-10;% SNR in dB +20dB so resulting in 10dB snr scompl=IIorig+sqrt(-1)*QQorig; scompln=awgn(scompl,SNRset,'measured',123,'dB'); II=real(scompln); QQ=imag(scompln); 2. 2nd case bpsksig=sorig; SNRset=-10+3;% SNR in dB s=awgn(bpsksig,SNRset,'measured',123,'dB');% adding noise to signal %resulting Eb/No[dB]=10log(Tsymbol/Tsample)+SNR[dB] %in my case Tsymbol=T,Tsample=0.01*T; so Eb/No[dB]=20+SNR[dB] 3. 1st case T=1; t=0:0.01*T:10*T; B=10000; dlt2=2^(0.5)*pi*B/((log(2))^(0.5)); IIdpdata=zeros(N-4,100+1); QQdpdata=zeros(N-4,100+1); cosintegral=zeros(N-4,2,100); cossum=zeros(N-4,2); cosdata=zeros(1,(N-4)*100); sindata=zeros(1,(N-4)*100); i=301; for k=1:2 for m=2:101 i=i+1; cosdelta(k,m-1)=IItr(i).*IItr(i-1)+QQtr(i).*QQtr(i-1); sindelta(k,m-1)=QQtr(i).*IItr(i-1)-IItr(i).*QQtr(i-1); end; end; j=0; IIdp=[]; QQdp=[]; IIdp(1)=1; QQdp(1)=0; i=0; for k=1:2 IIdprom(k,1)=1; QQdprom(k,1)=0; for m=2:101 i=i+1; IIdprom(k,m)=IIdprom(k,m-1).*cosdelta(k,m-1)-QQdprom(k,m-1).*sindelta( k,m-1); QQdprom(k,m)=QQdprom(k,m-1).*cosdelta(k,m-1)+IIdprom(k,m-1).*sindelta( k,m-1); %reference signals end; end; i=0; for k=1:size(aar,2)-4 for m=(k-1)*100+2:k*100+1 i=i+1; cosdata(i)=II(m).*II(m-1)+QQ(m).*QQ(m-1); sindata(i)=QQ(m).*II(m-1)-II(m).*QQ(m-1); end; end; i=0; for k=1:size(aar,2)-4 IIdpdata(k,1)=1; QQdpdata(k,1)=0; for m=2:101 i=i+1; IIdpdata(k,m)=IIdpdata(k,m-1).*cosdata(i)-QQdpdata(k,m-1).*sindata(i); QQdpdata(k,m)=QQdpdata(k,m-1).*cosdata(i)+IIdpdata(k,m-1).*sindata(i); end; end; clear j; for k=1:size(aar,2)-4 for i=1:2 for jj=1:100 cosintegral(k,i,jj)=IIdpdata(k,jj).*IIdprom(i,jj)+QQdpdata(k,jj).*QQdp rom(i,jj); %scalar product end; end; end; j=0; for k=1:size(aar,2)-4 for i=1:2 cossum(k,i)=sum(cosintegral(k,i,:)); %integratio
|
Pages: 1 Prev: mex a c++ code,with error LNK2001 Next: exiting a loop from user input |