Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

MATLAB での Python 関数の呼び出しによる段落テキストの折り返し

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

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

Python textwrap モジュールの使用

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

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

T = 'We at MathWorks believe in the importance of engineers and scientists. They increase human knowledge and profoundly improve our standard of living.';

Python 文字列の MATLAB string への変換

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

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

  wrapped      1x3                 8  py.list              

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

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

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

  wrapped      1x3               336  cell               

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

wrapped{1}
ans = 
  Python str with no properties.

    We at MathWorks believe in the importance of engineers and scientists.

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

wrapped = cellfun(@char, wrapped, 'UniformOutput', false);
wrapped{1}
ans = 
'We at MathWorks believe in the importance of engineers and scientists.'

これで、それぞれのセルの要素は 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{:})
% We at MathWorks believe in
% the importance of engineers
% and scientists. They
% increase human knowledge and
% profoundly improve our
% standard of living.

詳細

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