参考:https://ww2.mathworks.cn/help/matlab/ref/fprintf.html?searchHighlight=fprintf&s_tid=doc_srchtitle#btf98f7

将数据写入文本文件

fprintf

将数据写入文本文件

全页折叠
 

说明

示例

fprintf(fileID,formatSpec,A1,...,An) 按列顺序将 formatSpec 应用于数组 A1,...An 的所有元素,并将数据写入到一个文本文件。fprintf 使用在对 fopen 的调用中指定的编码方案。

示例

fprintf(formatSpec,A1,...,An) 设置数据的格式并在屏幕上显示结果。

示例

nbytes = fprintf(___) 使用前述语法中的任意输入参数返回 fprintf 所写入的字节数。

 

示例

全部折叠

输出字面文本和数组值

将多个数值和字面文本输出到屏幕。

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

formatSpec 输入中的 %4.2f 指定输出中每行的第一个值为浮点数,字段宽度为四位数,包括小数点后的两位数。formatSpec 输入中的 %8.3f 指定输出中每行的第二个值为浮点数,字段宽度为八位数,包括小数点后的三位数。\n 为新起一行的控制字符。

 
 

将双精度值输出为整数

显式将包含分式的双精度值转换为整数值。

a = [1.02 3.04 5.06];
fprintf('%d\n',round(a));
1
3
5

formatSpec 输入中的 %d 将向量 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 的调用输出标题文本 xexp(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 和写字板都将 '\n' 识别为换行指示符。

通过 type 命令查看文件的内容。

type exp.txt
     x       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)

formatSpec 输入中的 %s 指示变量 urlsitename 的值应作为文本输出。

输入参数

全部折叠

fileID - 文件标识符
1 (默认) | 2 | 标量

文件标识符,指定为下列值之一:

  • fopen 获取的文件标识符。

  • 1 表示标准输出(屏幕)。

  • 2 表示标准错误。

数据类型: double

formatSpec - 输出字段的格式
格式化操作符

输出字段的格式,使用格式化操作符指定。formatSpec 还可以包括普通文本和特殊字符。

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 的类型相同。

可选操作符

可选标识符、标志、字段宽度、精度和子类型操作符进一步定义了输出文本的格式。

  • 标识符

    处理函数输入参数的顺序。使用语法 n$,其中 n 代表函数调用中其他输入参数的位置。

    示例:('%3$s %2$s %1$s %2$s','A','B','C') 将输入参数 'A''B''C' 输出为:C B A B

    注意:如果输入参数为数组,则不能使用标识符指定该输入参数中的特定数组元素。

  • 标志

    '–'

    左对齐。
    示例:%-5.2f
    示例:%-10s

    '+'

    始终为任何数值输出符号字符(+ 或 –)。
    示例:%+5.2f
    右对齐文本。
    示例:%+10s

    ' '

    在值之前插入空格。
    示例:% 5.2f

    '0'

    在值之前补零以填充字段宽度。
    例如:%05.2f

    '#'

    修改选定的数值转换:

    • 对于 %o%x%X,将输出 00x0X 前缀。

    • 对于 %f%e%E,即使精度为零也将输出小数点。

    • 对于 %g%G,不删除尾随零或小数点。

    示例:%#5.0f

  • 字段宽度

    要输出的最低字符数。字段宽度操作符可以是数字,也可以是指向输入参数的星号 (*)。

    当您将 * 指定为字段宽度操作符时,其他输入参数必须指定打印宽度和要打印的值。宽度和值可以是参数对组,也可以是数值数组中的对组。使用 * 作为字段宽度操作符时,您可以打印具有不同宽度的不同值。

    示例:输入参数 ('%12d',intmax) 等效于 ('%*d',12,intmax)

    示例:输入参数 ('%*d',[2 10 5 100]) 返回 '10 100',其中两个空格分配给 10,五个空格分配给 100。您也可以将字段宽度和值指定为多个参数,如 ('%*d',2,10,5,100) 中所示。

    除非标志另行指定,否则该函数使用空格填充值之前的字段宽度。

  • 精度

    对于 %f%e%E

    小数点右侧的位数
    示例:'%.4f'pi 输出为 '3.1416'

    对于 %g%G

    有效位数
    示例:'%.4g'pi 输出为 '3.142'

    精度操作符可以是数字,也可以是指向参数的星号 (*)。

    当您将 * 指定为字段精度操作符时,其他输入参数必须指定打印精度和要打印的值。精度和值可以是参数对组,也可以是数值数组中的对组。使用 * 作为精度操作符时,您可以打印具有不同精度的不同值。

    *.* 指定为字段宽度和精度操作符时,必须以三元组形式指定字段宽度、精度和值。

    示例:输入参数 ('%.4f',pi) 等效于 ('%.*f',4,pi)

    示例:输入参数 ('%6.4f',pi) 等效于 ('%.*f',6,4,pi)

    示例:输入参数 ('%*.*f',6,4,pi,9,6,exp(1)) 返回 '3.1416 2.718282',其中以 96 分别作为 exp(1) 输出的字段宽度和精度。

    注意

    如果您为浮点值指定的精度操作符所表示的精度超出输入数值数据类型的精度,则在指定精度内,结果与输入值可能不匹配。结果取决于您的计算机硬件和操作系统。

  • 子类型

    可以使用子类型操作符将浮点值显示为八进制、十进制或十六进制值。子类型操作符紧邻转换字符之前。此表显示了可使用子类型的转换。

    输入值类型

    子类型和转换字符

    输出值类型

    浮点数

    %bx%bX
    %bo
    %bu

    双精度十六进制、八进制或十进制值
    例如:%bxpi 输出为 400921fb54442d18

    %tx%tX
    %to
    %tu

    单精度十六进制、八进制或十进制值
    例如:%txpi 输出为 40490fdb

格式化操作符前或后的文本

formatSpec 还可以在百分号 % 前添加其他文本,或者在转换字符后添加其他文本。文本可以为:

  • 要打印的普通文本。

  • 您无法作为普通文本输入的特殊字符。此表显示了如何在 formatSpec 中表示特殊字符。

    特殊字符

    表示形式

    单引号

    ''

    百分比字符

    %%

    反斜杠

    \\

    警报

    \a

    退格符

    \b

    换页符

    \f

    换行符

    \n

    回车符

    \r

    水平制表符

    \t

    垂直制表符

    \v

    其 Unicode 数值可以通过十六进制数 N 表示的字符

    \xN

    示例:sprintf('\x5A') 返回 'Z'

    其 Unicode 数值可以通过八进制数 N 表示的字符

    \N

    示例:sprintf('\132') 返回 'Z'

使用格式化操作符进行转换时要注意的行为

  • 数值转换仅输出复数的实部。

  • 如果指定不适合数据的转换(例如数值的文本转换),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 是屏幕上显示字符的个数。

提示

  • 读取函数 sscanffscanf 的格式设定符不同于写入函数 sprintffprintf 的格式。读取函数不支持精度字段。宽度字段在写入函数中指定最小值,但在读取函数中指定最大值。

参考

[1] Kernighan, B. W., and D. M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall, Inc., 1988.

[2] ANSI specification X3.159-1989: “Programming Language C,” ANSI, 1430 Broadway, New York, NY 10018.

扩展功能

C/C++ 代码生成
使用 MATLAB Coder 生成 C 代码和 C++ 代码。

用法说明和限制:

  • 参数 formatSpec 必须是常量。

  • formatSpec 中,十六进制数必须在 [0 7F] 范围内,八进制数必须在 [0 177] 范围内。

  • 如果 fileID 具有常量值 12 且不能进行外部调用,代码生成器将生成 C printf 调用。当外部调用被禁用或在 parfor 循环内调用 fprintf 时,不能进行外部调用。

  • 在以下情况下,生成的代码中 fprintf 的行为与 C 编译器的行为一致,而不是与 MATLAB 的行为一致:

    • 格式设定符具有一个对应的 C 格式设定符,例如 %e%E

    • fprintf 调用在 parfor 循环内。

    • 外部调用被禁用。

  • 不支持以下选项和功能:

    • 用于对输入值进行重新排序的 n$ 位置标识符。

    • 打印数组。

    • 使用子类型将浮点数打印为八进制、十进制或十六进制值。

  • 当您使用格式设定符 %s 调用 fprintf 时,不能在输入字符向量的中间放置空字符。要写入空字符,请使用 fprintf(fid, '%c', char(0))

  • 输入参数的类型必须与其格式类型匹配。例如,如果 n 是双精度,则代码生成不允许使用以下代码:

    str = sprintf('%d',n)

    要进行代码生成,请先将 n 转换为有符号整数类型,如 int8

    str = sprintf('%d',int8(n))
  • 当您使用整数格式设定符调用 fprintf 时,整数参数的类型必须能够被目标硬件表示为本机 C 类型。例如,如果您调用 fprintf('%d', int64(n)),目标硬件必须具有支持 64 位整数的本机 C 类型。

GPU 数组
通过使用 Parallel Computing Toolbox 在图形处理单元 (GPU) 上运行来加快代码执行。

用法说明和限制:

  • 此函数接受 GPU 数组,但不在 GPU 上运行。

有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。

分布式数组
使用 Parallel Computing Toolbox 在群集的组合内存中对大型数组进行分区。

matlab中upper 将字符串转换为大写的更多相关文章

  1. matlab中num2str 将数字转换为字符数组

    参考:https://ww2.mathworks.cn/help/matlab/ref/num2str.html?searchHighlight=num2str&s_tid=doc_srcht ...

  2. matlab中 注意事项--字符串

    Matlab中的字符串操作 原文链接:http://hi.baidu.com/dreamflyman/item/bd6d8224430003c9a5275a9f (1).字符串是以ASCII码形式存储 ...

  3. matlab中strcmpi比较字符串(不区分大小写)

    来源:https://ww2.mathworks.cn/help/matlab/ref/strcmpi.html?searchHighlight=strcmpi&s_tid=doc_srcht ...

  4. 【C语言】创建一个函数,利用该函数将字符串中的小写字母转换为大写字母

    原理: 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCII码差值为32,想要将大写字母转换 ...

  5. 【C语言】(数组)C语言字符串中的小写字母转换为大写字母

    先判断后转化 原理: 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCII码差值为32,想要 ...

  6. Jmeter将HTTP request报文体中的字符串转换为大写

    <awd><client id='${__javaScript("${IndividualID}".toUpperCase())}'><member ...

  7. Js中把JSON字符串转换为JSON对象(eval()、new Function())

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

  8. java将所有的字符串转换为大写或小写

    public class DaXie { public static void main(String[] args) { /**将所有的字符串转换成大写或小写字母并打印出来*/ String str ...

  9. linu 把文件中的字母小写转换为大写,大写转换为小写awk toupper tolower

    cat aa.txt|tr "[a-z]" "A-Z" [root@ob2 mytmp]# awk '{print toupper($0)}' aa2.txt ...

随机推荐

  1. new Map()详细介绍与对比

      说明: Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现.如果你需要“键值对”的数据结构,Map比Object更合适.它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串, ...

  2. 【Android】时间选择器,选择日期DatePicker 简单详解demo及教程

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...

  3. windows下TOMCAT对内存使用的设置

    1.打开TOMCAT目录 E:\备份\apache-tomcat-8.5.50-windows-x64\apache-tomcat-8.5.50\bin catalina.bat----------- ...

  4. Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。

    JSP页面中所需要的JavaScript事件及Ajax <script type="text/javascript"> function checkEmpNo(id){ ...

  5. SQL Builder 1.04

    解析效果: select id,code,name,utime,src,ctime from stock where id<20 and code like '%6%' order by id, ...

  6. 20190926-01Redis五大数据类型之List 000 027

  7. 双向绑定数据的实现(new Proxy 版本)

    调用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  8. 提高SSH服务安全,ssh黑白名单

    1.调整sshd服务配置,并重载服务 # vim /etc/ssh/sshd_config PermitRootLogin no                     #禁止root用户登录 Use ...

  9. W5300中文手册

    如果链接没了就Q我吧1178875532 链接:https://pan.baidu.com/s/1HcNJN_T6QJCvPWymU1sFDQ 提取码:suBB

  10. Kafka 【入门一篇文章就够了】

    初识 Kafka 什么是 kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订 ...