Запишите данные к текстовому файлу
fprintf( применяет fileID,formatSpec,A1,...,An)formatSpec ко всем элементам массивов A1,...An в порядке следования столбцов и записях данные к текстовому файлу. fprintf использует схему кодирования, заданную в вызове fopen.
fprintf( данные о форматах и отображают результаты на экране.formatSpec,A1,...,An)
Распечатайте несколько числовых значений и буквенного текста на экран.
A1 = [9.9, 9900]; A2 = [8.8, 7.7 ; ... 8800, 7700]; formatSpec = 'X is %4.2f meters or %8.3f mm\n'; fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm X is 8.80 meters or 8800.000 mm X is 7.70 meters or 7700.000 mm
%4.2f в formatSpec введите указывает, что первое значение в каждой линии выхода является числом с плавающей запятой с шириной поля четырех цифр, включая две цифры после десятичной точки. %8.3f в formatSpec введите указывает, что второе значение в каждой линии выхода является числом с плавающей запятой с шириной поля восьми цифр, включая три цифры после десятичной точки. \n управляющий символ, который запускает новую строку.
Явным образом преобразуйте значения с двойной точностью с частями к целочисленным значениям.
a = [1.02 3.04 5.06];
fprintf('%d\n',round(a));1 3 5
%d в formatSpec введите распечатывает каждое значение в векторе, round(a), как целое число со знаком. \n управляющий символ, который запускает новую строку.
Запишите короткую таблицу показательной функции к текстовому файлу под названием exp.txt.
x = 0:.1:1; A = [x; exp(x)]; fileID = fopen('exp.txt','w'); fprintf(fileID,'%6s %12s\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\n',A); fclose(fileID);
Первый вызов fprintf текст заголовка печати x и exp(x), и второй вызов распечатывает значения от переменной A.
Если вы планируете считать файл с Блокнотом Microsoft®, используйте '\r\n' вместо '\n' перемещаться в новую строку. Например, замените вызовы fprintf со следующим:
fprintf(fileID,'%6s %12s\r\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\r\n',A);
Функции импорта MATLAB®, все приложения UNIX®, и Microsoft Word и WordPad распознают '\n' как индикатор новой строки.
Просмотрите содержимое файла с type команда.
type exp.txtx exp(x) 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183
Запишите данные к файлу и возвратите количество записанных байтов.
Запишите массив данных, A, к файлу и получают количество байтов что fprintf записи.
A = magic(4); fileID = fopen('myfile.txt','w'); nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)
nbytes = 96
fprintf функция записала 96 байтов в файл.
Закройте файл.
fclose(fileID);
Просмотрите содержимое файла с type команда.
type('myfile.txt') 2 11 7 14
3 10 6 15
13 8 12 1
Отобразите гиперссылку (веб-сайт MathWorks) на экране.
url = 'https://www.mathworks.com'; sitename = 'The MathWorks Web Site'; fprintf('<a href = "%s">%s</a>\n',url,sitename)
%s в formatSpec введите указывает что значения переменных url и sitename, должен быть распечатан как текст.
fileID — Идентификатор файла (значение по умолчанию) | 2 | скалярИдентификатор файла в виде одного из следующего:
Идентификатор файла получен из fopen.
1 для стандартного вывода (экран).
2 для стандартной погрешности.
Типы данных: double
formatSpec — Формат выходных полейФормат выходных полей, заданных операторов форматирования использования. formatSpec также может включать обычный текст и специальные символы.
formatSpec может быть вектор символов в одинарных кавычках, или, запускающийся в R2016b, строковом скаляре.
Оператор форматирования
Оператор форматирования запускается со знака процента, %, и концы с символом преобразования. Символ преобразования требуется. Опционально, можно задать идентификатор, флаги, ширину поля, точность, и выделить подтипы в операторах между % и символ преобразования. (Пробелы недопустимы между операторами и показаны здесь только для удобочитаемости).

Символ преобразования
Эта таблица показывает символы преобразования, чтобы отформатировать числовые и символьные данные как текст.
| Тип значения | Преобразование | Детали |
|---|---|---|
Целое число, подписанное |
| Основа 10 |
Целое число, без знака |
| Основа 10 |
| Базируйтесь 8 (восьмеричный) | |
| Основывайте 16 (шестнадцатеричных), строчных букв | |
| То же самое как | |
Число с плавающей запятой |
| Представление с фиксированной точкой (Используют оператор точности, чтобы задать количество цифр после десятичной точки.) |
| Экспоненциальное представление, такое как | |
| То же самое как | |
| Более компактный из | |
| Более компактный из | |
Символы или строки |
| Отдельный символ |
| Вектор символов или массив строк. Тип синтезируемого текста совпадает с типом |
Дополнительные операторы
Дополнительный идентификатор, флаги, ширина поля, точность и операторы подтипа далее задают формат синтезируемого текста.
Идентификатор
Порядок для обработки входных аргументов функции. Используйте синтаксис , где n$n представляет положения других входных параметров в вызове функции.
Пример: ('%3$s %2$s %1$s %2$s','A','B','C') входные параметры печати 'A'BC можно следующим образом: C B A B.
Примечание: Если входной параметр является массивом, вы не можете использовать идентификаторы, чтобы задать конкретные элементы массива от того входного параметра.
Флаги
| Лево-выровнять по ширине. |
| Всегда распечатывайте символ знака (+ или –) для любого числового значения. |
| Вставьте пробел перед значением. |
'0' | Заполните к ширине поля нулями перед значением. |
| Измените выбранные числовые преобразования:
Пример: |
Ширина поля
Минимальное количество символов, чтобы распечатать. Оператор ширины поля может быть номером или звездочкой (*) относиться к входному параметру.
Когда вы задаете * как оператор ширины поля, другие входные параметры должны обеспечить и ширину и значение, которое будет распечатано. Ширины и значения могут быть парами аргументов или парами в числовом массиве. С * как оператор ширины поля, можно распечатать различные значения с различными ширинами.
Пример: входные параметры ('%12d',intmax) эквивалентны ('%*d',12,intmax).
Пример: входные параметры ('%*d',[2 10 5 100]) возвратите '10 100', с двумя местами, выделенными для 10 и пять пробелов для 100. Как альтернатива, также можно задать ширину поля и значения в качестве нескольких аргументов, в качестве в ('%*d',2,10,5,100).
Функция заполняет к ширине поля пробелами перед значением, если в противном случае не задано флагами.
Точность
Для | Количество цифр справа от десятичной точки |
Для | Количество значительных цифр |
Оператор точности может быть номером или звездочкой (*) относиться к аргументу.
Когда вы задаете * как полевой оператор точности, другие входные параметры должны обеспечить и точность и значение, которое будет распечатано. Точность и значения могут быть парами аргументов или парами в числовом массиве. С * как оператор точности, можно распечатать различные значения к различной точности.
Когда вы задаете *.* как ширина поля и операторы точности, необходимо задать ширину поля, точность и значения как триплеты.
Пример: входные параметры ('%.4f',pi) эквивалентны ('%.*f',4,pi).
Пример: входные параметры ('%6.4f',pi) эквивалентны ('%.*f',6,4,pi).
Пример: входные параметры ('%*.*f',6,4,pi,9,6,exp(1)) возвратите '3.1416 2.718282', с 9 и 6 как ширина поля и точность для выхода exp(1).
Если вы задаете оператор точности для значений с плавающей точкой, который превышает точность входного типа числовых данных, результаты не могут совпадать с входными значениями к точности, которую вы задали. Результат зависит от вашего компьютерного оборудования и операционной системы.
Подтипы
Можно использовать оператор подтипа, чтобы распечатать значение с плавающей точкой как его восьмеричное, десятичное, или шестнадцатеричное значение. Оператор подтипа сразу предшествует символу преобразования. Эта таблица показывает преобразования, которые могут использовать подтипы.
Тип входного значения | Подтип и символ преобразования | Тип выходного значения |
|---|---|---|
Число с плавающей запятой |
| С двойной точностью шестнадцатеричное, восьмеричное, или десятичное значение |
| Шестнадцатеричное, восьмеричное, или десятичное значение с одинарной точностью |
Текст прежде или после операторов форматирования
formatSpec может также включать дополнительный текст перед знаком процента, %, или после символа преобразования. Текст может быть:
Обычный текст, чтобы распечатать.
Специальные символы, которые вы не можете ввести как обычный текст. Эта таблица показывает, как представлять специальные символы в formatSpec.
Специальный символ | Представление |
|---|---|
Одна кавычка |
|
Символ процента |
|
Обратная косая черта |
|
Предупреждение |
|
Клавиша Backspace |
|
Перевод формата |
|
Новая строка |
|
Возврат каретки |
|
Горизонтальная табуляция |
|
Вертикальная табуляция |
|
Символ, числовое значение Unicode® которого может быть представлено шестнадцатеричным номером, |
Пример: |
Символ, числовое значение Unicode которого может быть представлено восьмеричным числом, |
Пример: |
Известное поведение преобразований с операторами форматирования
Числовые преобразования распечатывают только действительный компонент комплексных чисел.
Если вы задаете преобразование, которое не соответствует данным, таким как текстовое преобразование для числового значения, MATLAB заменяет заданное преобразование и использует %e.
Примеры преобразует pi к 3.141593e+00.
Если вы применяете текстовое преобразование (любой %c или %s) к целочисленным значениям MATLAB преобразует значения, которые соответствуют кодам допустимого символа к символам.
Примеры преобразует [65 66 67] к ABC.
Типы данных: char | string
A1,...,An — Числовой или символьные массивыЧисловой или символьные массивы в виде скаляра, вектора, матрицы или многомерного массива.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
nbytes — Количество байтовКоличество байтов, что fprintf записи, возвращенные как скаляр. При записи в файл, nbytes определяется кодировкой символов. При печати данных на экран, nbytes количество символов, отображенных на экране.
Спецификаторы формата для чтения функционируют sscanf и fscanf отличайтесь от форматов для функций записи sprintf и fprintf. Функции чтения не поддерживают поле точности. Поле width задает минимум для записи, но максимум для чтения.
[1] Керниган, B. W., и Д. М. Ричи, язык программирования C, второй выпуск, Prentice-Hall, Inc., 1988.
[2] Спецификация X3.159-1989 ANSI: “Язык программирования C”, ANSI, 1 430 Broadway, Нью-Йорк, NY 10018.
Указания и ограничения по применению:
formatSpec параметр должен быть постоянным.
В formatSpec, шестнадцатеричные числа должны быть в области значений [0 7F], и восьмеричные числа должны быть в области значений [0 177].
Если fileID имеет постоянное значение 1 или 2 и внешние вызовы не возможны, генератор кода производит printf C вызвать. Внешние вызовы не возможны, когда внешние вызовы отключены или когда fprintf называется в parfor цикл.
Поведение fprintf в сгенерированном коде совпадает с поведением компилятора C вместо поведения MATLAB в этих случаях:
Спецификатор формата имеет соответствующий спецификатор формата C, например, %e или %E.
fprintf вызов в parfor цикл.
Отключены внешние вызовы.
Эти опции и возможности не поддержаны:
n$ идентификатор положения для переупорядочения входных значений
Печать массивов
Используя подтипы, чтобы распечатать число с плавающей запятой как его восьмеричное, десятичное, или шестнадцатеричное значение
Когда вы вызываете fprintf со спецификатором формата %s, вы не можете поместить нулевой символ посреди вектора вводимого символа. Чтобы записать нулевой символ, используйте fprintf(fid, '%c', char(0)).
Типы входного параметра должны совпадать со своими типами формата. Например, если n двойное, генерация кода не позволяет следующий код:
str = sprintf('%d',n)Для генерации кода, сначала бросает n к типу целого числа со знаком, такому как int8.
str = sprintf('%d',int8(n))Когда вы вызываете fprintf со спецификатором целочисленного формата тип целочисленного аргумента должен быть типом, который целевой компьютер может представлять как нативный тип C. Например, если вы вызываете fprintf('%d', int64(n)), затем целевой компьютер должен иметь нативный тип C, который поддерживает 64-битное целое число.
Указания и ограничения по применению:
Эта функция принимает массивы графического процессора, но не работает на графическом процессоре.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
Указания и ограничения по применению:
Эта функция работает с распределенными массивами, но выполняет в клиенте MATLAB.
Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.