매트랩을 이용한 QPSK 시스템 BER 구현(이론값, Gray Coding 했을때, 안했을때)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

매트랩을 이용한 QPSK 시스템 BER 구현(이론값, Gray Coding 했을때, 안했을때)에 대한 보고서 자료입니다.

본문내용

K Diagram을 보고 문뜩 실수를 찾아내기까지 많은 시간이 걸렸다. 항상 느끼는 것이지만 코딩은 어렵지만 성취하고 났을 때의 기쁨은 이루 말할 수 없는 것 같다.
5.소스 코드
bit = round(rand(1000000,2)); %2백만개의 임의의 bit 1열은 in-phase 2열은 quadriphase
bit2 = zeros(1000000,2); %gray coding 안할때 비트할당 일단 0으로
m_c = bit(:,1); %in-phase 성분의 비트 행렬
m_s = bit(:,2); %quadri-phase 성분의 비트 행렬
s_c = m_c*2-1; %polar-NRZ 형태
s_s = m_s*2-1; %polar-NRZ 형태
output1=zeros(1000000,2); %gray coding에서 output 초기화
output2=zeros(1000000,2); %gray coding 안할때 output 초기화
Eb=zeros(11,1); %bit energy 초기화
E=zeros(11,1); %symbol energy 초기화
for i=1:1000000 %for 구문으로 Gray coding 안할때 Signal Constellation
%에서의 비트할당
if (s_c(i)>=0) & (s_s(i)>=0) %1사분면 00
bit2(i,:)=[0,0]; %bit2의 i행에 할당
elseif (s_c(i) >=0) & (s_s(i)<0) %4사분면 11
bit2(i,:)=[1,1];
elseif (s_c(i)<0) & (s_s(i)>=0) %2사분면 01
bit2(i,:)=[0, 1];
elseif (s_c(i)<0) & (s_s(i)<0) %3사분면 10
bit2(i,:)=[1, 0];
end
end
scatterplot([s_c,s_s]); %시그널 컨스털레이션
k=1.38*10^-23; %볼쯔만상수
T= 300; %상온27도에서 절대온도
N0=k*T; %N0를 kT로 표현
var_n=0.5*N0; %잡음의 분산
noise_c=randn(1000000,1)*sqrt(var_n); %in-phase AWGN 표현
noise_s=randn(1000000,1)*sqrt(var_n); %quadri-phase AWGN 표현
SNR =[0 1 2 3 4 5 6 7 8 9 10]; %SNR을 0부터 10까지 나타냄
for a= 1:11 %for문을 11번 돌림
Eb(a)=2*var_n*10.^(SNR(a)/10); %SNR에 따른 bit에너지
E(a)=2*Eb(a); %symbol 에너지
signal_c= s_c.*sqrt(E(a)./2); %Polar NRZ에 실제 크기 부여함
signal_s= s_s.*sqrt(E(a)./2);
r_c=signal_c+noise_c; %AWGN 채널을 거친 in-phase신호
r_s=signal_s+noise_s; %AWGN 채널을 거친 quadri-phase 신호
for j = 1:1000000 %gray coding을 통한 판단
if (r_c(j)>=0) & (r_s(j)>=0) %수신신호가 1사분면이면
output1(j,:)=[1,1]; %11로 판단하고
elseif (r_c(j) >=0) & (r_s(j)<0) %수신신호가 4사분면이면
output1(j,:)=[1,0]; %10으로 판단
elseif (r_c(j)<0) & (r_s(j)>=0) %수신신호가 2사분면에있으면
output1(j,:)=[0, 1]; %01로 판단
elseif (r_c(j)<0) & (r_s(j)<0) %수신신호가 3사분면에 있으면
output1(j,:)=[0,0]; %00으로 판단
end
end
for k = 1:1000000 %gray coding을 사용하지 않았을때
if (r_c(k)>=0) & (r_s(k)>=0) %수신신호가 1사분면에 있으면
output2(k,:)=[0,0]; %00로 판단하고
elseif (r_c(k) >=0) & (r_s(k)<0) %4사분면에 있으면
output2(k,:)=[1,1]; %11로 판단
elseif (r_c(k)<0) & (r_s(k)>=0) %2사분면에 있으면
output2(k,:)=[0, 1]; %01로 판단
elseif (r_c(k)<0) & (r_s(k)<0) %3사분면에 있으면
output2(k,:)=[1,0]; %10으로 판단
end
end
compare1= xor(output1, bit);% graycoding 이용했을때 수신신호와 송신신호비교(같으면0 다르면1)
error1=sum(sum(compare1))/2000000; %compare의 합(다른bit의개수)/보낸bits수
BER1(a)=error1; %SNR이 0~12일때 각각의 에러확률을 BER 행렬에 대입
compare2= xor(output2, bit2);% graycoding 이용하지않았을때 수신신호와 송신신호비교(같으면0 다르면1)
error2=sum(sum(compare2))/2000000; %compare의 합(다른bit의개수)/보낸bits수
BER2(a)=error2; %SNR이 0~12일때 각각의 에러확률을 BER 행렬에 대입
end
scatterplot([s_c,s_s]); %시그널 컨스털레이션
subplot(1,2,1);
semilogy(SNR, BER1,\'o-\',SNR,BER2,\'*-\'); %동시에 log scale로 플랏
title(\'BER curves for QPSK system in AWGN channel\');
legend(\'Gray coding\',\'non-Gray coding\');
xlabel(\'Eb/N0\');
ylabel(\'Bit error rate\');
subplot(1,2,2);
BER_Theo=qfunc(sqrt(2*10.^(SNR./10))); %이론적인 에러확률
semilogy(SNR, BER_Theo,\'-\',SNR,BER1,\'*\') %동시에 log scale로 플랏
title(\'BER curves for QPSK system in AWGN channel\');
legend(\'Theory\',\'Gray coding\');
xlabel(\'Eb/N0\');
ylabel(\'Bit error rate\');

키워드

매트랩,   통신,   QPSK,   오류,   BER,   Gray Coding,   디지털통신,   MATLAB
  • 가격3,000
  • 페이지수14페이지
  • 등록일2009.06.15
  • 저작시기2009.6
  • 파일형식한글(hwp)
  • 자료번호#541471
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니