このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
上級トピック
Python と MATLAB の import
コマンドの理解
import
ステートメントの機能は、MATLAB® と Python® で同じではありません。
MATLAB での Python モジュールの読み込み
Python コードでは、import
ステートメントを使用してコードを読み込み、アクセス可能にします。MATLAB は、モジュール名と関数名の先頭に py.
が入力された場合、自動的に Python を読み込みます。次のコードは、Python モジュール textwrap
で関数 wrap
を呼び出す方法を示しています。
Python コード | MATLAB コード |
---|---|
import textwrap pS1 = textwrap.wrap('This is a string') | S1 = py.textwrap.wrap('This is a string');
|
注意
MATLAB では、以下を入力しないでください。
import pythonmodule
次のような呼び出しは絶対に行わないでください。
import py.*
呼び出した場合、MATLAB は、同じ名前の MATLAB 関数の代わりに Python 関数を呼び出します。これは予期しない動作の原因になります。この import
コマンドを入力した場合は、次の MATLAB コマンドを呼び出さなければなりません。
clear import
クラス名または関数名の短縮
Python の from...import
ステートメントを使用すると、完全修飾名を使用せずにモジュールを参照できます。MATLAB では、関数 import
を使用します。以下のコードは、Python モジュール textwrap
で関数 wrap
を参照する方法を示しています。wrap
は MATLAB 関数ではないため、呼び出し構文は関数 import
を使用して短縮できます。このコマンドを呼び出した後に、パッケージ (py
) 名およびモジュール (textwrap
) 名を入力する必要はありません。
Python コード | MATLAB コード |
---|---|
import textwrap pS1 = textwrap.wrap('This is a string') from textwrap import wrap pS2 = wrap('another string') | S1 = py.textwrap.wrap('This is a string'); import py.textwrap.wrap S2 = wrap('another string'); |
import mymod as mm | mm = py.importlib.import_module('mymod'); % Use mm as an alias to access functionality in mymod |
Python 関数のヘルプ
Python 機能の詳細な説明は、外部リソース、特にhttps://www.python.orgを参照してください。Python のドキュメンテーションにはさまざまなバージョンがあるため、必ずご使用のシステムのバージョンを参照してください。MATLAB のドキュメンテーションにある多くの例は、Python 標準ライブラリの関数を参照します。
サードパーティ製またはユーザー定義の Python モジュールで関数を使用するには、そのモジュールのインストール方法とその機能の詳細について、そのベンダーの製品ドキュメンテーションを参照してください。
コマンド MATLAB py.help
を使用すると、www.python.org/doc
の Python ヘルプが表示されます。パッケージとクラスのヘルプは広範囲に及ぶことがあり、MATLAB コマンド ウィンドウに表示すると使用しにくい可能性があります。
パッケージ
py.help('textwrap')
クラス
py.help('textwrap.TextWrapper')
クラスのメソッド
py.help('textwrap.TextWrapper.wrap')
関数
py.help('textwrap.fill')
MATLAB に Python Error:
で始まるエラー メッセージが表示された場合、その詳細については Python のドキュメンテーションを参照してください。
メモ
タブ補完では、使用可能な Python 機能は表示されません。
MATLAB では、入力引数なしで py.help
を呼び出す対話型の Python ヘルプを使用することはできません。
MATLAB と名前が競合する Python メソッドの呼び出し
Python メソッド名が、MATLAB 基底クラスまたは予約済み関数のシールド メソッド名である場合、MATLAB はメソッド名を変更します。新しい名前は文字 x
で始まり、元の名前の 1 文字目が大文字に変更されます。たとえば、MATLAB は Python メソッド cat
の名前を xCat
に変更します。予約済みメソッドのリストは、既定の動作を変更するメソッドを参照してください。
メソッド名が MATLAB キーワードの場合、MATLAB は matlab.lang.makeValidName
を呼び出してメソッド名を変更します。キーワードのリストは、iskeyword
を参照してください。
生成された名前が重複している場合、MATLAB は matlab.lang.makeUniqueStrings
を使用してメソッド名を変更します。
Python 関数 eval
の呼び出し
この例では、Python の eval
コマンドを使用して式 x+y
を評価する方法を説明します。eval
のヘルプを読みます。
py.help('eval')
Help on built-in function eval in module __builtin__: eval(...) eval(source[, globals[, locals]]) -> value Evaluate the source in the context of globals and locals. The source may be a string representing a Python expression or a code object as returned by compile(). The globals must be a dictionary and locals can be any mapping, defaulting to the current globals and locals. If only globals is given, locals defaults to it.
式を評価するには、globals
名前空間パラメーターに Python dict
値を渡します。
x
値と y
値の Python dict
変数を作成します。
workspace = py.dict(pyargs('x',1,'y',6))
workspace = Python dict with no properties. {'y': 6.0, 'x': 1.0}
式を評価します。
res = py.eval('x+y',workspace)
res = 7
あるいは、変数を割り当てずに 2 つの数値を加算するために、空の dict
値を globals
パラメーターに渡します。
res = py.eval('1+6',py.dict)
res = 7
呼び出し可能な Python オブジェクトの実行
呼び出し可能な Python オブジェクトを実行するには、関数 feval
を使用します。たとえば、Python クラスのインスタンス obj
が呼び出し可能な場合、Python 構文 obj(x1, ..., xn)
を次のいずれかの MATLAB ステートメントで置換します。
feval(obj,x1, ..., xn)
obj(x1, ..., xn)
MATLAB における Python 演算子の表記
MATLAB では、次のオーバーロードされた演算子をサポートしています。
Python の演算子記号 | Python メソッド | MATLAB メソッド |
---|---|---|
+ (バイナリ) | __add__ , __radd__ | plus , + |
- (バイナリ) | __sub__ , __rsub__ | minus , - |
* (バイナリ) | __mul__ , __rmul__ | mtimes , * |
/ | __truediv__ , __rtruediv__ | mrdivide , / |
== | __eq__ | eq , == |
> | __gt__ | gt , > |
< | __lt__ | lt , < |
!= | __ne__ | ne , ~= |
>= | __ge__ | ge , >= |
<= | __le__ | le , <= |
- (単項) | __neg__ | uminus , -a |
+ (単項) | __pos__ | uplus , +a |
次の Python 演算子はサポートされていません。
Python の演算子記号 | Python メソッド |
---|---|
% | __mod__ , __rmod__ |
** | __pow__ , __rpow__ |
<< | __lshift__ , __rlshift__ |
>> | __rshift__ , __rrshift__ |
& | __and__ , __rand__ |
^ | __xor__ , __rxor__ |
| | __or__ , __ror__ |
// (バイナリ) | __floordiv__ , __rfloordiv__ |
+= (単項) | __iadd__ |
-= (単項) | __isub__ |
*= (単項) | __imul__ |
/= (単項) | __itruediv__ |
//= (単項) | __ifloordiv__ |
%= (単項) | __imod__ |
**= (単項) | __ipow__ |
<<= (単項) | __ilshift__ |
>>= (単項) | __irshift__ |
&= (単項) | __iand__ |
^= (単項) | __ixor__ |
!= (単項) | __ior__ |
~ (単項) | __invert__ |