Вызовите функцию 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.

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

Для просмотра документации необходимо авторизоваться на сайте