LoginSignup
1
1

MatlabからPython関数を呼び出す

Last updated at Posted at 2024-04-05

目標:MatlabからPythonの関数を呼び出せるようにする

はじめに

  • 本稿は自分自身の覚書として作成した
  • 本文中の各サイトを参考にしながら、一連の流れがわかるように手順を残す
  • 各サイトから有力な情報を得られました。大変感謝です

手順

1. Pythonをインストール
2. 外部パッケージをインストール
3. Matlabから外部パッケージをインポート
4. Matlabでパッケージを呼び出し、テスト実行

動作環境

項目 条件
OS windows10 64 bit
Matlab version 2024a
Python version 3.11

1. Pythonをインストール

下記の参考リンクをもとに、Python仮想環境を構築する

  • ダウンロードが終わったら、Pythonをインストールする
  • コマンドプロンプトで下記コマンドを実行し、仮想環境を構築する
コマンドプロンプト
cd (保存したい場所)
python -m venv (仮想環境を保存するフォルダの名前) # 仮想環境を構築

参考リンク: https://campkougaku.com/2022/12/29/spyder_in_nonanaconda/

2. 外部パッケージをインストール

  • 1章で構築した仮想環境に、外部パッケージをインストールする
  • コマンドプロンプトで下記コマンドを実行
コマンドプロンプト
% 仮想環境の呼び出し
cd (仮想環境を構築したフォルダの場所)
Scripts\activate.bat

# 仮想環境へ外部パッケージをインストール
pip install --upgrade pip
pip install numpy          # インストールしたいパッケージ名を入力
pip install opencv-python  # インストールしたいパッケージ名を入力
pip install matplotlib     # インストールしたいパッケージ名を入力

3. Matlabから外部パッケージをインポート

  • Matlabを実行
  • Matlabが自動でPythonのインタープリターを検出するが、自分で作った仮想環境を指定する必要があるので、下記コマンドを実行
matlab
% pythonインタープリタの設定
pyenv
% 上記コマンドでVersion情報に違いがあれば、下記コマンドで正しい場所を設定
pyenv("Version", "(仮想環境の保存場所)\Scripts\python.EXE");

  • 下記コマンドでPython関数を実行し、動作チェック
  • エラーがなければ設定完了
matlab
% Python関数の呼び出しテスト
py.list({'This','is a','list'});
myList = pyrun("l = ['A', 'new', 'list']", "l");

4. Matlabでパッケージを呼び出し、テスト実行

  • 以下の構文で外部パッケージをMatlab上に呼び出せる ※このとき、パッケージは事前に、2章で説明した方法に従い、インストールすること
matlab
% 外部パッケージのインポート
np  = py.importlib.import_module('numpy');
cv  = py.importlib.import_module('cv2');
plt = py.importlib.import_module('matplotlib.pyplot');
  • 外部パッケージのテスト実行を行う
matlab
% 外部パッケージのテスト実行
% cv2 を import して、imread する
cv = py.importlib.import_module('cv2');
array = cv.imread("(フルパス)\images.jpg"); 

% ndarray型をmatlabデータ型に変換
img = uint8(array);
imshow(img);
1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1