⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpskwithch.m

📁 Bit error probability curve for QPSK with channal
💻 M
字号:
clc;
clear all; 
noofsym=20; 
noofcp=16;  
noofpts=64; 
nooftaps=8;
gs=complex(randsrc(noofpts,noofsym),randsrc(noofpts,noofsym));
[dtar dtacl]=size(gs);
noofdata=dtar*dtacl
data1=reshape(gs,noofdata,1);
       for i=1:noofpts*noofsym
               if (and(real(data1(i))>0,imag(data1(i))>0))
                       data1(i)=0;
               elseif(and(real(data1(i))<0,imag(data1(i))>0))
                      data1(i)=1;
               elseif(and(real(data1(i))<0,imag(data1(i))<0))
                      data1(i)=2;
               elseif(and(real(data1(i))>0,imag(data1(i))<0))
                      data1(i)=3;
               end
       end
   for i=1:noofsym
     ifftcol=ifft(gs(:,i),noofpts);
     ifftrow=ifftcol.';
     cpx=[ifftrow(noofpts-noofcp+1:noofpts) ifftrow]; 
     cpmat(:,i)=cpx.';
   end
 readforcon=reshape(cpmat,noofsym*(noofpts+noofcp),1);
 sigpwr=sum(abs(readforcon).^2)/(noofsym*(noofpts+noofcp))
 for snrr=1:35
       count(snrr)=0;
       noofruns=10^3;
           for r=1:noofruns
                   h=complex(0.707*randn(nooftaps,1),0.707*randn(nooftaps,1));
                   hfft=conj(fft(h,noofpts));
                   magsqr=abs(hfft).^2;
                   scalftr=hfft./magsqr;
                   convolution=conv(h,readforcon);  
                   noofconvol=noofsym*(noofpts+noofcp)+nooftaps-1;
                   convpwr=sum(abs(convolution).^2)/noofconvol;
                   noise_pow=convpwr*10^(-snrr/10);  
                   noise=sqrt(noise_pow)*0.707*complex(randn(noofconvol,1),randn(noofconvol,1)); 
                   noisepwr=sum(abs(noise).^2)/noofconvol;
                   withnoise=noise+convolution;
                   wthnsepwr=sum(abs(withnoise).^2)/noofconvol;
                  for i=1:noofsym
                      rmcpcl=withnoise(i*(noofcp+noofpts)-noofpts+1:i*(noofcp+noofpts));
                      rmcpclmat(:,i)=rmcpcl;
                  end
invfft=fft(rmcpclmat,noofpts);
                   for i=1:noofsym
                          scaledfft(:,i)=invfft(:,i).*scalftr;
                   end    
                   data2=reshape(scaledfft,noofdata,1);
                    for i=1:noofpts*noofsym
                           if (and(real(data2(i))>0,imag(data2(i))>0))
                                  data2(i)=0;
                           elseif(and(real(data2(i))<0,imag(data2(i))>0))
                                  data2(i)=1;
                           elseif(and(real(data2(i))<0,imag(data2(i))<0))
                                  data2(i)=2;
                           elseif(and(real(data2(i))>0,imag(data2(i))<0))
                                  data2(i)=3;
                           end
                    end  
     
error=data1-data2;
                   for i=1:noofdata
                          if error(i)==0
                             count(snrr)=count(snrr);
                          else 
                             count(snrr)=count(snrr)+1;
                          end
                    end
     snrratio=convpwr/noisepwr;
          end
     result(snrr)=count(snrr)/(noofdata*noofruns);
 end
 snrr=[1:35];
%     semilogy(snrr,result); 
semilogy(snrr,result,'bs-','LineWidth',2);
axis([0 40 10^-5 1])
%legend('theory', 'simulation');
xlabel('SNR, dB')
ylabel('Bit Error Rate')
title('Bit error probability curve for QPSK with channal')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -