Запишите данные к текстовому файлу
fprintf(fileID,formatSpec,A1,...,An)fprintf(formatSpec,A1,...,An)nbytes = fprintf(___)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') 16 5 9 4
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 — Идентификатор файла1 (значение по умолчанию) | 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', 'B', 'C' можно следующим образом: 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.
Пример: '%s' преобразовывает pi в 3.141593e+00.
Если вы применяете текстовое преобразование (или %c или %s) к целочисленным значениям, MATLAB преобразовывает значения, которые соответствуют кодам допустимого символа к символам.
Пример: '%s' преобразовывает [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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.