exponenta event banner

Вызов функции Python в MATLAB для переноса текста абзаца

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

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

Использовать Python textwrap Модуль

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

Создание абзаца текста для воспроизведения.

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

Позвоните в 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.

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

  wrapped      1x3               336  cell               

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

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

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

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

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