최근 GNU Radio를 이용한 통신 프로젝트를 진행하기 위해 간단한 BPSK 변조 신호를 생성해 본 후
Constellation Modulation 된 Binary File을 Python의 Numpy를 통해 읽고 쓰는 방법을 알아보겠습니다.
1. Binary File 읽기
1-1. GNU Radio를 이용해 BPSK 변조 된 File 신호 저장
우선 GNU Radio를 통해 간단한 BPSK 변조 신호를 만듭니다.
GNU Radio는 기본적으로 C++언어를 기본으로 구축하고 있어 File Sink라는 Block을 통해 Binary File 형식으로 데이터를 저장하게 됩니다.
(이 때 저장되는 파일의 확장자는 원하는 방식으로 할 수 있으나 이번 글에서는 확장자를 없이 저장하겠습니다)
1-2. Numpy를 이용해 Binary File 읽기
행렬 저장을 위한 Npy 파일 형태가 아닌 C언어 형태의 이진파일을 읽고 쓸 수 있는 것이 Numpy 모듈입니다.
Binary File을 처리하기 위해 numpy.fromfile을 이용하여 저장된 Binary file인 bpsk를 읽을 수 있습니다.
import numpy as np
binary_data = np.fromfile(file="./bpsk", dtype="complex64")
print(binary_data)
2. Binary File 저장
h5 File로 메타데이터와 함께 Signal Data를 저장할 경우
따로 전처리 블록을 구성하였을 때 GNU Radio h5 File을 읽어올 수 없는 경우가 발생할 수 있습니다.
이에따라 h5 File로부터 Signal Data만 Binary data로 따로 저장하기 위해 Numpy의 tofile을 사용하였습니다.
import numpy as np
import h5py
h5_file = h5py.File(file="./bpsk.h5", mode="r")
h5_signal = np.array(h5_file['signal'])
with open('./h5_signal_file', 'wb') as f:
h5_signal.tofile(f, format='complex64')
return :
지금까지 GNU Radio를 이용하여 Binary 신호 파일과 h5 신호 파일을 만든 후
Numpy module을 이용해 Binary 데이터를 읽고 쓰는 것까지 알아보았습니다.
감사합니다.
:)
'Python > Numpy' 카테고리의 다른 글
[Numpy] numpy.mean 의 Axis(축) 에 대하여 (0) | 2023.01.18 |
---|