본 게시글의 원문은 Yann Debray의 MATLAB with Python Book 입니다. 해당 책은 MIT 라이센스를 따르기 때문에 개인적으로 번역하여 재배포 합니다. 본 포스팅에는 추후 유료 수익을 위한 광고가 부착될 수도 있습니다.

MIT License

Copyright (c) 2023 Yann Debray

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

본 게시물에서 활용된 소스 코드들은 모두 Yann Debray의 GitHub Repo에서 확인할 수 있습니다.

6.1. 파이썬용 MATLAB 엔진 API 시작하기

먼저, 파이썬용 MATLAB 엔진이 설치되어 있는지 확인하세요 (섹션 3.8에서 설명한 대로).

파이썬 스크립트나 주피터 노트북에서 MATLAB 엔진 패키지를 로드하기 위해 첫 번째로 입력해야 할 명령문은 다음과 같습니다:

>>> import matlab.engine

이후 파이썬에서 MATLAB과 상호작용하는 두 가지 옵션이 있습니다:

  1. 새 세션 시작하기 (배치 또는 인터랙티브 모드) 기본적으로 엔진은 “-nodesktop” 모드로 배치 모드에서 시작됩니다:
    >>> m = matlab.engine.start_matlab()
    

    (이것은 함수를 입력할 때 VSCode가 제공하는 컨텍스트 도움말입니다) 워크스페이스에 저장된 값을 시각화하거나 콘솔에서 인터랙티브하게 디버깅하기 위해 MATLAB 데스크탑을 표시하고 싶다면, “desktop” 인수를 지정할 수 있습니다:

    >>> m = matlab.engine.start_matlab("-desktop")
    
  2. 기존 세션에 연결하기 먼저 MATLAB을 수동으로 시작해야 합니다. 편의를 위해 MATLAB 데스크탑과 파이썬 개발 환경(주피터 또는 VSCode)을 나란히 열어두는 것이 좋습니다. MATLAB 엔진 세션을 공유하려면 MATLAB 내부에서 다음을 입력하세요:
    >> matlab.engine.shareEngine
    

    파이썬이 자동으로 MATLAB 엔진 세션을 찾지 못할 경우, 세션 이름을 요청할 수도 있습니다:

    >> matlab.engine.engineName
    ans =
    'MATLAB_11388'
    

    그런 다음 파이썬 쪽에서 다음 명령을 입력하세요:

    >>> m = matlab.engine.connect_matlab()
    

(이것은 함수를 입력할 때 VSCode가 제공하는 컨텍스트 도움말입니다) 파이썬이 실행 중인 세션을 자동으로 찾지 못하면, 이전에 MATLAB에서 요청한 엔진 이름('MATLAB_11388')을 입력할 수 있습니다.