pbj0812의 코딩 일기

[PYTHON] Python에서 m-file 함수 사용하기(Oct2Py 소개) 본문

ComputerLanguage_Program/PYTHON

[PYTHON] Python에서 m-file 함수 사용하기(Oct2Py 소개)

pbj0812 2019. 11. 13. 02:04

1. 서론

 - Matlab을 만든 MathWorks 사에서 Python 과 Matlab 간의 호환을 위한 API 제작 및 배포 (링크)

 - 하지만 Matlab이 설치되어 있지 않은 환경에서는 사용 불가
   * '시스템에 지원되는 버전의 Python과 MATLAB R2014b 이상이 설치되어 있는지 확인합니다.' 명시

 - 대체품 검색

 - Oct2Py 라는 라이브러리가 m-file을 Python 내에서 사용 할 수 있게 만든다는 글 확인

 

2. Oct2Py 설치(링크)

 2.1. 설치 전 환경설정(링크)

  - Octave 4.0 이상 설치 필요(Octave 설치 링크)

  - Numpy, Scipy 설치 필요(Anaconda 설치 추천)(Anaconda 설치 링크)

2.2. 설치 

pip install oct2py # pip 버전 따라 pip3로 대체(작성자는 pip3로 함)

  또는 (Anaconda 설치시)

conda install -c conda-forge oct2py

3. 사용 방법

 3.1. Python 내에서 Matlab(Octave) 문법 쓰기

# 라이브러리 부르기
import numpy as np
from oct2py import Oct2Py

# 인스턴스 생성
oc = Oct2Py()

# octave 함수 사용
print(oc.abs(-1)) 
# 결과 : 1

print(oc.upper('xyz'))
# 결과 : XYZ

3.2. Python 내에서 Matlab(Octave) 그림 그리기

# 라이브러리 부르기
import numpy as np
from oct2py import Oct2Py

oc = Oct2Py()

# -2pi ~ 2pi 사이 0.2 간격으로 수 채워넣기
xx = np.arange(-2*np.pi, 2*np.pi, 0.2)

oc.surf(np.subtract.outer(np.sin(xx), np.cos(xx)))

결과

- Jupyter Notebook으로 실험 시 저 창이 클릭으로 종료되지 않음, 창을 닫기 위해서는 아래 명령어 실행

# 종료
oc.close()

 3.3. Python 내에서 m-file 실행

 - 테스트를 위한 m-file 생성(테스트 파일 명 : a.m)

 - 뜻 : a라는 함수에 b를 넣으면 c의 값이 b+1이 된다.

function c = a(b)
    c = b+1

 - 실험

import numpy as np
from oct2py import octave

# 위치 지정
octave.addpath('/Users/pbj0812/Desktop/jupyter_notebook/oct2py_test') #'a.m 경로'

# a.m의 a 함수 사용(input : 2)
aaa = octave.a(2)
# 결과 : c = 3

aaa
# 결과 : 3.0

4. 참고 문헌

 - mathworks

 - oct2py

 - octave

 

Comments