1. ホーム
  2. スクリプト・コラム
  3. パイソン

python call matlab メソッドの詳細

2022-01-02 07:11:25

1. pythonのバージョンとmatlabのバージョンの対応表

私はMACにAnaconda3をインストールしましたが、それにはpythonのバージョン3.8が付属しています。pythonのバージョンとmatlabのバージョンの対応を利用すると、少なくともR2020b以上をダウンロードする必要があったので、matlabのバージョンR2021bをインストールしたところ、matlabとpythonのバージョンが確実に対応し、pythonでmatlabコードを呼び出すことができるようになりました。

2. matlab.engineをインポートする際の問題点

pythonでimport matlab.engineを使用すると、プロンプトが表示されます。ImportError: matlab.engineという名前のモジュールがありません。この問題を解決するには、次のステップから始める必要があります。

(1) matlabのコマンドラインウィンドウで、次のように入力します。

matlabroot


matlabのインストールディレクトリを取得します。

>> matlabroot

ans =

    '/Applications/MATLAB_R2021b.app'

>> 


次に、MACに付属のターミナルで、matlabのインストールディレクトリの中のpythonディレクトリに移動します。

d@DdeMacBook-Pro ~ % cd /Applications/MATLAB_R2021b.app/extern/engines/python
d@DdeMacBook-Pro python % 


そして、以下の動作を順次行っていく。

python setup.py build --build-base="builddir" install
 
python setup.py install --prefix="installdir"
 
python setup.py build --build-base="builddir" install --prefix="installdir"
 
python setup.py install --user


上記の操作で、以下のようなフォルダができあがります。


(2) 上記の操作の後、python は matlab.engine モジュールがインポートできないと表示するので、次の操作を行う必要があります。 /Applications/MATLAB_R2021b.app/extern/engines/python/build/lib フォルダを、python のパッケージのインストールディレクトリに追加します。 /Users/dpp/opt/anaconda3/lib/python3.8/site-packages/ これにより、matlab.engineモジュールのインポートに失敗する問題が解決されます。

(3)ウィンドウズの場合は、以下の2つのブログを参考にしてください。参考1、参考2

3. The code reports an error: Please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU

pytorchを使用してコードでモデルをロードするとき、コンピュータがGPUを持っていない場合、エラーを報告します。ストレージをCPUにマップするためにtorch.load with map_location=torch.device('cpu') を使用してください。この場合、モデルをロードするコードを以下のように修正する必要があります。

修正前

checkpoint = torch.load(file_name)

修正しました。 checkpoint = torch.load(file_name, map_location='cpu')