ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

MATLAB からの Python の呼び出し

この例では、MATLAB® 内で Python® 言語の関数およびモジュールを使用する方法を説明します。例では、Python 標準ライブラリからテキストの書式設定モジュールを呼び出します。

MATLAB は、Python の参照実装 (通称 CPython) Version 2.7、3.5、および 3.6 をサポートします。Mac または Linux プラットフォームを使用している場合、Python は既にインストールされています。Windows を使用している場合、Python がインストールされていなければ、https://www.python.org/download などにある配布版をインストールする必要があります。詳細は、サポートされている Python 実装のインストールを参照してください。

段落内でテキストを折り返す Python 関数の呼び出し

MATLAB にも Python 標準ライブラリに相当する内容が数多くありますが、すべてが備わっているわけではありません。たとえば、テキストのブロックをキャリッジ リターンや他の簡易関数により書式設定する textwrap というモジュールがあります。MATLAB も関数 textwrap を提供していますが、これは、UI コントロールの中に収まるようテキストを折り返すだけです。

使用するテキストの段落を作成します。

T = 'MATLAB(R) is a high-level language and interactive environment for numerical computation, visualization, and programming. Using MATLAB, you can analyze data, develop algorithms, and create models and applications. The language, tools, and built-in math functions enable you to explore multiple approaches and reach a solution faster than with spreadsheets or traditional programming languages, such as C/C++ or Java(TM).';

Python 文字列の MATLAB 文字列への変換

関数 textwrap.wrap を呼び出すには、関数名の前に py. という文字を入力します。import textwrap と入力しないでください。

wrapped = py.textwrap.wrap(T);
whos wrapped
  Name         Size            Bytes  Class      Attributes

  wrapped      1x7                 8  py.list              

wrapped は Python リストです。これは、Python 文字列のリストです。MATLAB は、このタイプを py.list として表示します。

py.list を Python 文字列の cell 配列に変換します。

wrapped = cell(wrapped);
whos wrapped
  Name         Size            Bytes  Class    Attributes

  wrapped      1x7               840  cell               

wrapped は MATLAB cell 配列ですが、各 cell の要素は Python 文字列です。

wrapped{1}
ans = 

  Python str with no properties.

    MATLAB(R) is a high-level language and interactive environment for

関数 char を使用して、Python 文字列を MATLAB string に変換します。

wrapped = cellfun(@char, wrapped, 'UniformOutput', false);
wrapped{1}
ans =

    'MATLAB(R) is a high-level language and interactive environment for'

これで、それぞれのセルの要素は MATLAB 文字列になります。

段落のカスタマイズ

キーワード引数を使用して、段落の出力をカスタマイズします。

前のコードでは簡易関数 wrap を使用しましたが、このモジュールでは py.textwap.TextWrapper 機能を使用してさらに多くのオプションが提供されています。オプションを使用するには、https://docs.python.org/2/library/textwrap.html#textwrap.TextWrapper で説明されているキーワード引数を指定して、py.textwap.TextWrapper を呼び出します。

名前と値のペアのコンマ区切りリストを指定して MATLAB 関数 pyargs を使用し、キーワード引数を作成します。width によって、テキストを 30 文字の幅に書式設定します。initial_indent および subsequent_indent のキーワードにより、各行の先頭に MATLAB で使用されるコメント文字 % が表示されます。

tw = py.textwrap.TextWrapper(pyargs(...
    'initial_indent', '% ', ...
    'subsequent_indent', '% ', ...
    'width', int32(30)));
wrapped = wrap(tw,T);

MATLAB 引数に変換し、結果を表示します。

wrapped = cellfun(@char, cell(wrapped), 'UniformOutput', false);
fprintf('%s\n', wrapped{:})
% MATLAB(R) is a high-level
% language and interactive
% environment for numerical
% computation, visualization,
% and programming. Using
% MATLAB, you can analyze
% data, develop algorithms,
% and create models and
% applications. The language,
% tools, and built-in math
% functions enable you to
% explore multiple approaches
% and reach a solution faster
% than with spreadsheets or
% traditional programming
% languages, such as C/C++ or
% Java(TM).

詳細

ここでは、Python が MATLAB ユーザーにとって利用可能なもう 1 つのライブラリのソースであるということを記憶に留めれば十分です。タプルや辞書などの Python データ型を含めた、MATLAB と Python との間のデータのやり取りについては、Python ライブラリ関数の呼び出しを参照してください。