1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonからMatlabを動かす -Windows編-

Posted at

はじめに

pythonからMatlabでつくった関数を読み込んで動かす方法を記述。
もうすでに記事にされている方がいるのですがWindows ver ということでご容赦願いたい。

想定する読者

  • Matlab関数で書かれた資産をpythonで読み出して使いたい人
  • WindowsOSの人
  • pythonインストールは自力でできる人(pipなど)

今回は、matlabで用意した関数をoptunaと呼ばれるパラメータ探索手法を用いて、Matlabで定義した関数の最適値をpythonで探索するまでの一連の手順を記載します。

動作環境

Matlab R2022b
Windows 10
python 3.10 インストール済み想定
pip install optuna も実施済み

実施手順

  • python用Matlab engine をpython上にインストールする。
python -m pip install matlabengine
  • Matlab用関数を準備
    簡単な2次関数の値を返す関数です。
function [c] = function_matlab(a,b)
 c = (a-3)^2 + (b-0.5)^2;
end
  • test用pythonを準備
    ここでは、先程作成したfunction_matlab 関数をmatlab.engineを通して呼び出して、
    その値を最小化するXとYを探索します。
    xは-10から10の連続値、y はリストの中の値で最適値を探します。
import optuna
import matlab.engine
eng = matlab.engine.start_matlab()

def objective(trial):
    x = trial.suggest_float('x', -10, 10)
    y = trial.suggest_categorical('y', [-1, 0 , 0.3 , 0.6, 2])
    c = eng.function_matlab(x,y)
    
    return c

study = optuna.create_study()

study.optimize(objective, n_trials=100)
print(study.best_params)
  • 上記pythonコードを実行します。その際にMatlab関数と、pythonソフトは同じフォルダに入れておいてください。

実行結果

100回の試行で x=2.99, y=0.3 がベストと探索できてます。
関数から考えて、x=3, y=0.5が関数の最小値なので、無事探索できてます。
またMatlab関数をpythonで読み出して 最適化できています。

[I 2023-01-22 12:10:36,995] Trial 98 finished with value: 1.3919151142684436 and parameters: {'x': 1.8372811542473204, 'y': 0.3}. Best is trial 96 with value: 0.04007151564978928.
[I 2023-01-22 12:10:37,018] Trial 99 finished with value: 0.45619130467454294 and parameters: {'x': 2.3548710945287423, 'y': 0.3}. Best is trial 96 with value: 0.04007151564978928.
{'x': 2.9915433073965483, 'y': 0.3}

終わりに

Matlabのツールボックスが充実してきているので、そのうちこんな面倒な使い方はしなくなるのでしょうが、自身の記憶保持も兼ねてメモを残しておきます。

1
0
0

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?