compose

Данные о формате в несколько строк

Описание

пример

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

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

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

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

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

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

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) переводит последовательности символа ESC в txt.

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

  • Если txt содержит операторы форматирования, затем compose переводит все последовательности символа ESC за исключением \\ и %%. Это оставляет все другие символы, включая операторы форматирования, неизменные.

Примеры

свернуть все

Формат 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 оставляет другие операторы форматирования без изменений.

Создайте массив строк, который включает последовательности символа ESC, чтобы задать горизонтальные вкладки. Используйте compose функция, чтобы перевести \t символы ESC. Начиная в 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 включает буквенный текст, представляющий символы ESC, такие как \n, затем compose переводит символы ESC.

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

    '#'

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

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

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

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

    Пример: %#5.0f

  • Ширина поля

    Минимальное количество символов, чтобы распечатать.

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

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

    Однако num2str функция не заполняет к ширине поля пробелами.

  • Точность

    Количество цифр, чтобы распечатать.

    Для %fE, или %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

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

    \xN

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

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

    \N

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

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

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

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

    Примеры преобразует pi к 3.141593e+00.

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

    Примеры преобразует [65 66 67] к ABC.

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

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

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

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

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

свернуть все

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

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

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

Введенный в R2017b