Вызов Python от MATLAB

Этот пример показывает, как использовать функции языка Python® и модули в MATLAB®. Пример вызывает форматирующий текст модуль от библиотеки стандарта Python.

MATLAB поддерживает ссылочную реализацию Python, часто названного CPython, версиями 2.7, 3.5, 3.6, и 3.7. Если вы находитесь на платформе Mac или Linux, вам уже установили Python. Если вы находитесь на Windows, необходимо установить распределение, такое как найденные по https://www.python.org/download, если вы уже не сделали так. Для получения дополнительной информации смотрите Установку Поддерживаемая Реализация Python.

Вызывание функции Python, чтобы свернуть текст в абзаце

MATLAB имеет эквивалентности для большой части библиотеки стандарта Python, но не всего. Например, textwrap является модулем для форматирования блоков текста с возвратами каретки и другими удобствами. MATLAB также обеспечивает функцию textwrap, но он только сворачивает текст, чтобы соответствовать в управлении пользовательского интерфейса.

Создайте абзац текста, чтобы вопроизвести с.

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.

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

  wrapped      1x7               840  cell               

Несмотря на то, что wrapped является массивом ячеек MATLAB, каждый элемент ячеек является строкой Python.

wrapped{1}
ans = 

  Python str with no properties.

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

Преобразуйте строки Python в строки MATLAB с помощью функции char.

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. Чтобы использовать опции, вызовите py.textwap.TextWrapper с аргументами ключевого слова, описанными по https://docs.python.org/2/library/textwrap.html#textwrap.TextWrapper.

Создайте аргументы ключевого слова с помощью функции pyargs MATLAB со списком, разделенным запятыми пар имя/значение. 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. Если вы хотите узнать о движущихся данных между MATLAB и Python, включая типы данных Python, такие как кортежи и словари, смотрите Библиотеки Python.