compose

Форматируйте данные в несколько строк

Описание

пример

str = compose(formatSpec,A) Форматы значения данных из массива входов, A, с использованием операторов форматирования, заданных formatSpec и возвращает получившийся текст в str. The compose функции форматируют значения из A в порядке столбца. Если formatSpec является строковые массивы, тогда как и массив выхода str. В противном случае str - массив ячеек из векторов символов.

compose также переводит последовательности escape-символов в formatSpec. Последовательности Escape-символов представляют непечатаемые символы или задают действия, такие как новые строки или вкладки.

The compose функция может возвращать несколько частей форматированного текста как строковые массивы или массив ячеек векторов символов, в отличие от sprintf. The sprintf функция возвращает только строковый скаляр или вектор символов.

  • Если A имеет несколько строк, затем compose возвращает str как строковые массивы или массив ячеек с одинаковым числом строк. compose повторяет formatSpec в каждой строке str, с форматированными значениями из соответствующей строки A.

  • Если количество столбцов в A превышает количество операторов в formatSpec, затем compose повторяет formatSpec как дополнительный столбец str. Дополнительные столбцы A вносить форматированные значения в новый столбец в str.

  • Если количество столбцов в A меньше, чем количество операторов в formatSpec, затем compose не форматирует значения с помощью этих операторов. Вместо этого compose помещает неизмененные операторы форматирования в str. Однако compose преобразует все последовательности escape-символов, кроме \\ и %%.

str = compose(formatSpec,A1,...,AN) форматирует значения данных из нескольких входных массивов и объединяет все форматированные значения. Когда compose использует операторы форматирования из formatSpec для преобразования данных из входа массива эти операторы форматирования становятся недоступными в следующие входы массивы.

Для примера, если formatSpec является "%f %f %d %s" и A1 имеет два столбца, затем операторы "%f %f" применяются к значениям в A1 только. Они не могут быть применены к A2 или любой другой входной массив. compose применяет оставшиеся операторы, "%d %s", в A2,...,AN.

Если количество столбцов в последнем входном массиве, AN, превышает количество остальных операторов, затем compose добавляет дополнительный столбец в str, как описано в предыдущем синтаксисе. Если количество столбцов в AN меньше, чем количество остальных операторов, тогда compose помещает последние неизмененные операторы в str.

пример

str = compose(txt) перемещает последовательности escape-символов в txt.

  • Если txt не содержит операторов форматирования, тогда compose преобразует все последовательности escape-символов. Все остальные символы остаются неизменными.

  • Если txt содержит операторы форматирования, затем compose преобразует все последовательности escape-символов, кроме \\ и %%. Все остальные символы, включая операторы форматирования, остаются без изменений.

Примеры

свернуть все

Формат pi до восьми десятичных знаков и возвращает их как строку.

A = pi
A = 3.1416

Начиная с R2017a, вы можете создавать строки, используя двойные кавычки. Задайте formatSpec как строка.

formatSpec = "%.8f"
formatSpec = 
"%.8f"
str = compose(formatSpec,A)
str = 
"3.14159265"

Создайте числовой массив, который содержит значения pi и e. Используйте %e и %f операторы с различными точностями.

A = [pi exp(1)]
A = 1×2

    3.1416    2.7183

formatSpec = "The value of pi is %.2e; the value of e is %.5f.";
str = compose(formatSpec,A)
str = 
"The value of pi is 3.14e+00; the value of e is 2.71828."

Форматируйте значения, взятые из числовых массивов. Поскольку числовые массивы имеют несколько строк, compose возвращает строковые массивы с одинаковым числом строк.

X = [1 2 3 4 5]';
Y = X.^2;

Начиная с R2017a, вы можете создавать строки, используя двойные кавычки. Задайте formatSpec в виде строки и возвращает форматированные значения как строковые массивы.

formatSpec = "%d.^2 = %d";
str = compose(formatSpec,X,Y)
str = 5x1 string
    "1.^2 = 1"
    "2.^2 = 4"
    "3.^2 = 9"
    "4.^2 = 16"
    "5.^2 = 25"

Форматируйте значения, когда количество столбцов в массиве данных не равно количеству операторов. Если A имеет больше столбцов, тогда compose повторяет formatSpec как дополнительный столбец выхода строковых массивов.

Начиная с R2017a, вы можете создавать строки, используя двойные кавычки. Задайте formatSpec как строка.

formatSpec = "The time is %d:%d";
A = [8 15 9 30;
     10 20 11 50];
str = compose(formatSpec,A)
str = 2x2 string
    "The time is 8:15"     "The time is 9:30" 
    "The time is 10:20"    "The time is 11:50"

Форматируйте значения при A имеет меньше столбцов.

formatSpec = "Check-in time %d:%d; Check-out time %d:%d";
A = [12 27;
     11 16];
str = compose(formatSpec,A)
str = 2x1 string
    "Check-in time 12:27; Check-out time %d:%d"
    "Check-in time 11:16; Check-out time %d:%d"

Начиная с A имеет только два столбца, compose использует только первые два оператора форматирования в formatSpec для форматирования значений. compose оставляет другие операторы форматирования без изменений.

Создайте строковые массивы, который включает escape-символьные последовательности для задания горизонтальных вкладок. Используйте compose функция для перевода \t побег символов. Начиная с R2017a, вы можете создавать строки, используя двойные кавычки.

str = ["Name\tDate of Birth\tLocation";...
       "Jones\t10/20/2015\tUK";...
       "Simpson\t09/12/2015\tUSA"];
newStr = compose(str)
newStr = 3x1 string
    "Name->Date of Birth->Location"
    "Jones->10/20/2015->UK"
    "Simpson->09/12/2015->USA"

Предотвратите перевод \n использование другого \ символ.

str = "Don't escape the second\n\\n escaped-character sequence.";
newStr = compose(str)
newStr = 
    "Don't escape the second
     \n escaped-character sequence."

Входные параметры

свернуть все

Формат выходных полей, заданный с помощью операторов форматирования. formatSpec также может включать обычный текст и специальные символы.

Если formatSpec включает буквенные тексты, представляющие побочные символы, такие как \n, затем compose преобразует символы побега.

formatSpec может быть вектор символов в одинарных кавычках или, начиная с R2016b, строковым скаляром.

Оператор форматирования

Оператор форматирования начинается со знака процента %, и заканчивается символом преобразования. Требуется символ преобразования. Вы также можете задать идентификатор, флаги, ширину поля, точность и операторы подтипа между % и символ преобразования. (Пространства недопустимы между операторами и показаны здесь только для читаемости).

Символ преобразования

В этой таблице показаны символы преобразования в форматирование числовых и символьных данных в виде текста.

Тип значенияПреобразованиеПодробнее

Целое число, со знаком

%d или %i

Основа 10

Целое число, без знака

%u

Основа 10

%o

База 8 (октальная)

%x

База 16 (шестнадцатеричная), строчные буквы af

%X

То же, что и %x, заглавные буквы AF

Число с плавающей запятой

%f

Обозначение с фиксированной точкой (Используйте оператор точности, чтобы задать количество цифр после десятичной точки.)

%e

Экспоненциальное обозначение, такое как 3.141593e+00 (Используйте оператор точности, чтобы задать количество цифр после десятичной точки.)

%E

То же, что и %e, но в верхнем регистре, например 3.141593E+00 (Используйте оператор точности, чтобы задать количество цифр после десятичной точки.)

%g

Чем компактнее %e или %f, без конечных нулей (Используйте оператор точности, чтобы задать количество значащих цифр.)

%G

Чем компактнее %E или %f, без конечных нулей (Используйте оператор точности, чтобы задать количество значащих цифр.)

Символы или строки

%c

Один символ

%s

Вектор символов или строковые массивы. Тип выходного текста совпадает с типом formatSpec.

Необязательные операторы

Необязательный идентификатор, флаги, ширина поля, точность и операторы подтипа дополнительно определяют формат выходного текста.

  • Идентификатор

    Примечание: В отличие от sprintf функция, compose не поддерживает идентификаторы.

  • Флаги

    '–'

    Слева-оправдать.
    Пример: %-5.2f
    Пример: %-10s

    '+'

    Всегда печатайте символ (+ или -) для любого числового значения.
    Пример: %+5.2f
    Текст с выравниванием по правому краю.
    Пример: %+10s

    ' '

    Вставьте пространство перед значением.
    Пример: % 5.2f

    '0'

    Заполните до ширины поля нулями перед значением.
    Пример: %05.2f

    '#'

    Измените выбранные числовые преобразования:

    • Для %o, %x, или %X, печать 0, 0x, или 0X префикс.

    • Для %f, %e, или %E, напечатайте десятичную точку, даже если точность равна 0.

    • Для %g или %G, не удаляйте конечные нули или десятичную точку.

    Пример: %#5.0f

  • Ширина поля

    Минимальное количество символов для печати.

    Пример: '%5d' печатает intmax как 2147483647 потому что значение, возвращенное intmax превышает минимальное количество символов для печати.

    Если количество символов для печати меньше ширины поля, compose function pads к ширине поля с пространствами перед значением, если иное не задано флагами.

    Однако, num2str функция не заполняет ширину поля с помощью пространств.

  • Точность

    Количество цифр для печати.

    Для %f, %e, или %E

    Количество цифр справа от десятичной точки
    Пример: '%.4f' печатает pi как '3.1416'

    Для %g или %G

    Количество значащих цифр
    Пример: '%.4g' печатает pi как '3.142'

    Пример: '%6.4f' печатает pi как '3.1416'.

    Примечание

    Если вы задаете оператор точности для значений с плавающей точкой, который превышает точность входного типа числовых данных, результаты могут не совпадать с заданной точностью. Результат зависит от оборудования компьютера и операционной системы.

  • Подтипы

    Можно использовать оператор подтипа, чтобы напечатать значение с плавающей точкой как его восьмеричное, десятичное или шестнадцатеричное значение. Оператор подтипа непосредственно предшествует символу преобразования. В этой таблице показаны преобразования, которые могут использовать подтипы.

    Вход значения

    Подтип и символ преобразования

    Выход значения

    Число с плавающей запятой

    %bx или %bX
    %bo
    %bu

    Шестнадцатеричное, восьмеричное или десятичное значение двойной точности
    Пример: %bx печатает pi как 400921fb54442d18

    %tx или %tX
    %to
    %tu

    Шестнадцатеричное, восьмеричное или десятичное значение с одной точностью
    Пример: %tx печатает pi как 40490fdb

Текст до или после операторов форматирования

formatSpec может также включать дополнительный текст перед знаком процента, %, или после символа преобразования. Текст может быть:

  • Обычный текст для печати.

  • Специальные символы, которые вы не можете ввести как обычный текст. В этой таблице показано, как представлять специальные символы в formatSpec.

    Специальный символ

    Представление

    Одинарная кавычка

    ''

    Процент символа

    %%

    Обратная косая черта

    \\

    Тревога

    \a

    Клавиша Backspace

    \b

    Подача формы

    \f

    Новая линия

    \n

    Возврат каретки

    \r

    Горизонтальная вкладка

    \t

    Вертикальная вкладка

    \v

    Символ, чей Юникод® числовое значение может быть представлено шестнадцатеричным числом, N

    \xN

    Пример: sprintf('\x5A') возвращает 'Z'

    Символ, числовое значение в Юникоде которого может быть представлено восьмеричным числом N

    \N

    Пример: sprintf('\132') возвращает 'Z'

Заметное поведение преобразований с операторами форматирования

  • Числовые преобразования печатают только действительный компонент комплексных чисел.

  • Если вы задаете преобразование, которое не соответствует данным, такое как преобразование текста для числового значения, MATLAB® переопределяет заданное преобразование и использует %e.

    Пример: '%s' преобразует pi на 3.141593e+00.

  • Если вы применяете преобразование текста (либо %c или %s) в целочисленные значения, MATLAB преобразует значения, которые соответствуют допустимым символьным кодам, в символы.

    Пример: '%s' преобразует [65 66 67] на ABC.

Числовые символьные или строковые массивы, заданный как скалярный, векторный, матричный или многомерный массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Вход текст, заданный как строковые массивы, вектор символов или массив ячеек векторов символов. compose переводит любые последовательности escape-символов в txt. Для примера, compose переводит \n в символ новой строки.

Типы данных: string | char | cell

Выходные аргументы

свернуть все

Форматированный текст, возвращенный как строковые массивы или массив ячеек из векторов символов.

Типы данных: string | cell

Расширенные возможности

Введенный в R2016b