Вызов Python от MATLAB

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

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