exponenta event banner

сочинить

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

Описание

пример

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

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

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

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 панели функций до ширины поля с пробелами перед значением, если флагами не указано иное.

    Тем не менее, 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