ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SISO 통신시스템 오류 확률 프로그램 (python)
    전공공부/통신 2021. 1. 11. 15:03

    안녕하세요. 개알못입니다.

    SISO 통신시스템 오류 확률 프로그램을 짜보았습니다.

    Colab을 통해 Python으로 코드를 작성하였습니다.

     


     

    SISO (Single-Input, Single-Output)이므로 송수신 안테나 개수는 1개입니다.

    판정법은 ML (Maximum likelihood) detection으로 진행했습니다.

    변조는 QPSK이고, 2-bit data symbol은 Gray code로 하였습니다.

    그래프의 x축은 SNR[dB]이고 y축은 SER 입니다.


    1.

    - 코드에 사용된 모듈입니다.

    - 루트2를 자주 사용하기에 간편하게 C로 정의했습니다.

     

    2.

    - QPSK, Gray code를 s로 반영했습니다. 

    - x축을 P의 dB 값으로 표현했습니다.

    - y축은 아직 값이 없기에, 일단 나중에 추가할 계획으로 SER 변수만 만들었습니다.

     

    3.

    - 각 P_dB마다 SER을 계산하기 위해 for을 사용했습니다.

    - 계싼할때는 dB값이 아니므로 P_dB를 P로 변환했습니다.

    - 오류 검사할 때 쓰이는 변수들을 정의했습니다.

     

    4.

    - num_frame을 100000으로 잡았기에, nframe이 num_frame이 넘고 num_error가 100이 넘을 때 종료되게 하였습니다.

    - 발생하는 메세지는 uniformly, randomly하게 2bit로 나오게 설정했습니다.

    - 랜덤하게 나온 x값을 계싼하기 위해, data symbol로 변경했습니다.

     

    5.

    - fading channel(h), AWGN noise(n)을 python gaussian distribution randomd으로 사용했습니다.

    - Receiver의 signal을 y로 표현했습니다.

     

    6.

    - s가 4개 있으므로 4번 비교를 해주게 for문을 이용했습니다.

    - ML 판정법을 비교를 통해 표현했습니다. (index 저장)

    - 랜덤으로 생성된 x값과 ML을 거친 s값을 비교하여, 동일하지 않을 경우 error을 더했습니다.

    - SER은 전체 error에서 전체 frame으로 나누었습니다.

    - P_dB의 for문이 끝날때마다 SER을 SER변수에 추가했습니다.

     

    7.

    - 그래프를 만들기위해 코드를 작성했습니다.

     

    8. 결과

    - SNR이 커질수록 오류가 감소함을 볼 수 있습니다.

     

    [ 전체 코드 ]

     

     

    코드 전체 복사하는걸 몰라서 캡쳐로 올립니다.

    궁금한 점 있으시면 댓글 달아주세요~

     

    댓글

Designed by Tistory.