매트랩을 이용한 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 했을때, 안했을때)에 대한 보고서 자료입니다.

본문내용

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주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니