아래 포스팅에서 MATLAB BPSK BER simulation 에 대해 설명 드린적이 있는데요.
2011/03/08 - [통신] - [디지털 통신] BPSK, QPSK
2011/03/19 - [programming language/MATLAB] - MATLAB BPSK BER simulation in AWGN channel
2011/03/27 - [programming language/MATLAB] - MATLAB QPSK BER simulation in AWGN channel
오늘은 어떤 분이 질문을 하셔서 unipolar signaling을 한 경우의 BER simulation 을 해 보려 합니다.
일단 시뮬레이션의 Es 는 1 로 정규화하고, unipolar signaling 의 경우 M=2 이므로 최종적인 unipolar signaling 의 잡음 분산 수식은 BPSK 시뮬레이션과 마찬가지로 아래 수식이 됩니다.
하지만 unipolar signaling 이므로 비트 0을 0 으로 1 을 sqrt(2) 로 mapping 해야 평균 심볼 에너지가 1이 되게 됩니다.
다음으로 Decision Boundary 를 설정해야 는데, BPSK 인 경우에는 -1~1 사이의 딱 중간인 0을 Decision Boundary 설정했었죠~
Unipolar Signaling에서는 0 ~ sqrt (2) 사이의 딱 중간인 1/sqrt(2) 가 되겠죠~
물론 위에 계산 한 Decision Bound는 비트 1,0의 발생 확률이 같다는 가정하에서 계산되는 겁니다. 1, 0의 발생 확률이 다르다면 Decision Boundary 는 딱 중간이 안 됩니다.
다음으로 Unipolar Signaling 의 이론적인 BER 성능을 알아야겠죠~
이제 Unipolar Signaling 에 대한 AWGN 환경에서의 BER simulation 을 위한 준비는 다 된 거 같네요.
위 포스팅에서 했던 BPSK 시뮬레이션 코드에서 몇 군데만 손을 보면 다음과 같이 됩니다.
이미지로 올렸더니 오타 나시는 분들인 많은 것 같아서 코드로 올립니다.
clc
clear
close all
N_bits=7000000; % 생성할 비트 수
Eb_No_dB=0:2:10; % Eb/N0 dB scale
BER_buffer=zeros(size(Eb_No_dB)); % BER 저장할 버퍼
for n=1:length(Eb_No_dB)
Eb_No_ral_scale= 10 ^(Eb_No_dB(n)/10); % Eb/N0 real scale 값 변환
sigma_v=sqrt(1./(2*Eb_No_ral_scale)); % 잡음의 표준 편차 값 계산
bits_v=randi([0 1],N_bits,1); % 비트 생성
Symbols=bits_v* sqrt(2); % symbol mapping
noise_v=randn(N_bits,1)*sigma_v; % AWGN 생성
tx_signal=Symbols + noise_v ; % 신호 + 잡음
demapped_bits= tx_signal > (1/sqrt(2)) ; % 수신단 demapping
BER_buffer(n)=sum(bits_v ~= demapped_bits) ./ N_bits; % BER calculation
fprintf('Eb/No= %g BER: %g\n',Eb_No_dB(n) ,BER_buffer(n))
end
%% 이론적인 Unipolar Signaling BER 계산
Eb_N0_theory=0:0.05:10 ;
snr=10.^ (Eb_N0_theory./10);
Ber_value_theory= 0.5*erfc(sqrt(snr)./sqrt(2)); % Theoretical Unipolar Signaling BER
%% 그래프 그리기
figure(1),semilogy(Eb_No_dB,BER_buffer,'b*',Eb_N0_theory,Ber_value_theory,'r--'), xlabel('Eb/No [dB]'), ylabel('BER')
grid,axis([0 10 0.000001 1]), legend('Simulated result','Theoretical Unipolar Signaling result')
결과는 다음과 같이 나오게 되는군요.
참조
http://www.mathworks.co.kr/matlabcentral/fileexchange/7458-bpsk-and-ask-simulation
'programming language > MATLAB' 카테고리의 다른 글
MATLAB 소프트웨어 단속 하나 보네요~ (13) | 2013.12.25 |
---|---|
MATLAB Churchill equation GUI (0) | 2013.12.10 |
MATLAB reshape() (0) | 2013.11.29 |
MATLAB 자신만의 colormap 만들기 colormapeditor (0) | 2013.11.20 |
Autohotkey를 사용한 MATLAB 단축키 (4) | 2013.11.18 |
MATLAB clipboard() 함수를 사용한 복사 붙여넣기 (0) | 2013.11.11 |
MATLAB comma로 나눠진 파일(csv) 읽기 csvread(), 쓰기 csvwrite() (0) | 2013.11.09 |
MATLAB 구매 가격에 대해 질문하는 분들을 위해… (2) | 2013.11.07 |
댓글