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

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

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