[TIP] MATLAB 코드를 Python으로 변환하는 방법
무선 통신 시나리오를 비롯한 여러가지 지원 모듈 측면에서 MATLAB 개발 환경이 압도적으로 선호되고 있지만, 간혹가다가 python으로 작업해야되는 경우가 생긴다...
물론, MATLAB, python 모두 잘 아는 연구자들의 경우, 무리없이 작업을 이어나갈 수 있지만, 필자와 같이 한쪽에 치우쳐서 작업을 하다 보면, 개발 환경이 바뀌면 하루 종일 애먹는 경우가 발생한다.
그래서 오늘은 MATLAB .m 파일을 자동 구문 해석 및 번역을 통하여 python .py로 변환하는 과정을 알아보자.
(*작업 환경 내에 git, python, anaconda가 설치되어 있다고 가정한다)
git : http://git-scm.com/download/win
python : https://www.python.org/downloads/
anaconda : https://www.anaconda.com/products/individual
우선 anaconda prompt를 실행하고 다음과 같은 작업을 순차적으로 수행하면 변환이 완료된다.
설치하는 과정 중에서 발생하는 오류와 수동으로 python 코드로 변환하는 작업을 비교해본다면, SMOP을 설치하는 것이 정신 건강에 이롭다는게 내 판단이다.
# smop installation
# ===========================================
pip install smop
pip install networkx==2.5
# https://github.com/victorlei/smop/issues/127
# https://github.com/victorlei/smop/issues/163
# G.node needs to be changed to G.nodes in two places in resolve.py.
# I think I just fixed that by changing the "G.node" to "G.nodes" on lines 54 and 66 :)
# converting example
cd smop
smop file_name.m
# matlab2python installation
# ===========================================
git clone https://github.com/ebranlard/matlab2python
cd matlab2python
pip install -r requirements.txt
# converting example
cd matlab2python
python matlab2python.py convertfile.m -o convertedfile.py
다음으로는 SMOP, matlab2python 변환기에 대한 성능을 분석한 결과를 나타낸다.
# matlab test code
# ===========================================
Nr = 16;
fully_Nr = (1:Nr);
disp(fully_Nr);
# SMOP translated result
# ===========================================
# Generated with SMOP 0.41
from libsmop import *
# converttest.m
Nr=16
# converttest.m:1
fully_Nr=(arange(1,Nr))
# converttest.m:2
disp(fully_Nr)
# matlab2python translated result
# ===========================================
import numpy as np
Nr = 16
fully_Nr = (np.arange(1,Nr+1))
print(fully_Nr)
matlab2python은 SMOP을 기반으로 함과 동시에 배열 및 행렬 번역 부분에서 월등히 높은 성능을 자랑한다. SMOP의 경우, 번역된 결과를 사용자가 재차 확인하고, 수정하는 등의 추가 작업이 발생하지만, matlab2python의 경우, 필요 라이브러리를 포함한 구문 해석이 훨씬 매끄럽기 때문에 개인적으로 SMOP, matlab2python을 모두 설치한 뒤, matlab2python을 사용하는 것을 추천한다.
(* 두 변환기 모두, 변환된 .py 파일은 각각 smop, matlab2python 파일에 생성됨으로 당황하지 말고, 변환 후 바로 해당 path를 확인해보길 바란다.)
'5G는 공부방 > 기록' 카테고리의 다른 글
[ETC] 우리는 왜 강화학습을 공부해야 하는가? (0) | 2022.04.29 |
---|---|
[TIP] Colab 런타임 유지하는 trick (0) | 2022.04.26 |
[TIP] Pandas를 이용한 CSV 파일 다루기 (0) | 2022.04.23 |
[TIP] Python 신뢰 구간 figure 만들기 (0) | 2022.04.23 |
[TIP] Network Attached Storage(NAS) 연결 (0) | 2022.03.12 |