?? qpskwithch.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 + -