Matlab中fprintf函数使用

目录

说明

示例

输出字面文本和数组值

将双精度值输出为整数

将表格数据写入文本文件

获取写入文件的字节数

在命令行窗口中显示超链接


fprintf函数的功能是将数据写入文本文件。

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)设置数据的格式并在屏幕上显示结果。

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 的调用输出标题文本 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 和写字板都将 '\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指示变量url和sitename的值应作为文本输出。

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

  • 从fopen获取的文件标识符。

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

  • 2 表示标准错误。

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

formatSpec可以是用单引号引起来的字符向量,从 R2016b开始,也可以是字符串标量。

格式化操作符

        格式化操作符以百分号 % 开头,以转换字符结尾。转换字符是必需的。也可以在 % 和转换字符之间指定标识符、标志、字段宽度、精度和子类型操作符。(操作符之间的空格无效,在这里显示空格只是为了便于阅读。)

转换字符

        此表显示了要将数值和字符数据格式化为文本的转换字符。

值类型转换详细信息

有符号整数

%d 或 %i

以 10 为基数

无符号整数

%u

以 10 为基数

%o

以 8 为基数(八进制)

%x

以 16 为基数(十六进制),小写字母 a–f

%X

与 %x 相同,大写字母 A–F

浮点数

%f

定点记数法(使用精度操作符指定小数点后的位数。)

%e

指数记数法,例如 3.141593e+00(使用精度操作符指定小数点后的位数)。

%E

与 %e 相同,但为大写,例如 3.141593E+00(使用精度操作符指定小数点后的位数)。

%g

更紧凑的 %e 或 %f,不带尾随零(使用精度操作符指定有效数字位数。)

%G

更紧凑的 %E 或 %f,不带尾随零(使用精度操作符指定有效数字位数。)

字符或字符串

%c

单个字符

%s

字符向量或字符串数组。输出文本的类型与 formatSpec 的类型相同。

可选操作符

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

标识符

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

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

标志

'–'

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

'+'

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

' '

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

'0'

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

'#'

修改选定的数值转换:

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

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

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

示例:%#5.0f

字段宽度

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

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

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

精度

对于 %f、%e 或 %E

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

对于 %g 或 %G

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

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

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

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

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

子类型

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

输入值类型

子类型和转换字符

输出值类型

浮点数

%bx 或 %bX
%bo
%bu

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

%tx 或 %tX
%to
%tu

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

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

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

  • 要打印的普通文本。

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

    特殊字符

    表示形式

    单引号

    ''

    百分比字符

    %%

    反斜杠

    \\

    警报

    \a

    退格符

    \b

    换页符

    \f

    换行符

    \n

    回车符

    \r

    水平制表符

    \t

    垂直制表符

    \v

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

    \xN

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

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

    \N

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

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

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

  • 如果指定不适合数据的转换(例如数值的文本转换),MATLAB 将改写指定的转换并使用%e。

  • 如果对整数值应用文本转换(%c 或 %s),MATLAB 会将对应于有效字符代码的值转换为字符。

提示

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

  • 85
    点赞
  • 593
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: fprintf函数MATLAB常用的输出函数,用于将数据输出到文件或命令窗口。其基本语法为: fprintf(fid,format,variables) 其,fid是文件标识符,可以是文件名或文件句柄;format是输出格式,可以是字符串或格式控制符;variables是要输出的变量,可以是一个或多个。 例如,要将变量x和y输出到命令窗口,可以使用以下代码: fprintf('x=%d, y=%d\n',x,y); 其,%d是整数格式控制符,\n表示换行。 另外,如果要将数据输出到文件,可以先打开文件,然后将文件句柄作为fid参数传递给fprintf函数。例如: fid = fopen('data.txt','w'); fprintf(fid,'x=%d, y=%d\n',x,y); fclose(fid); 这样就可以将数据输出到名为data.txt的文件。 ### 回答2: Matlab的fprintf函数是一种格式化输出函数,在控制台或文本文件输出格式化的数据。 fprintf函数的基本用法是: fprintf(format, variable1, variable2, ...) 其format是输出格式控制字符串,variable1、variable2等是要输出的数据。 format字符串可以包含格式控制符,如:%d表示输出整数,%f表示输出浮点数,%s表示输出字符串,%c表示输出字符等。可以使用多个格式控制符,用空格或其他字符分隔。 变量部分可以是变量、向量或矩阵。输出的每个元素将按照指定的格式进行格式化输出,并以制表符隔开。在矩阵,输出元素的顺序是按列优先。 当要将输出内容输出到文件时,可以将文件名作为第一个参数传递给函数,并且需要在文件名前面加上一个“%”,表示打开文件进行写入操作。例如: fid = fopen('%output.txt','w') fprintf(fid,format, variable1, variable2, ...) fclose(fid) 上面的代码,fid表示打开的文件句柄,在使用fclose函数关闭文件之前,程序会一直在文件写入输出内容。 除了基本的用法之外,fprintf函数还支持一些高级用法,如控制输出精度、在输出添加文本等。如果希望在输出添加文本,可以在format字符串添加文本部分,文本部分需要用单引号括起来,如:'The value of x is '。 总的来说,Matlab的fprintf函数是一个非常有用的输出格式化函数,可以帮助使用者输出符合规范的数据,并且可以将数据输出到文件。 ### 回答3: fprintf函数MATLAB一个十分常用的输出格式化函数,它主要的作用是将格式化的字符串按照指定格式输出到屏幕或者文件。下面我们来详细介绍一下MATLABfprintf函数用法函数原型: ``` fprintf(fid,format, A, B, C, …) ``` 参数说明: - fid:指定输出文件的标识符,fid可以是一个文件描述符,也可以是1表示标准输出,也可以是2表示标准错误输出。 - format:格式化字符串,用来指定输出内容的格式,格式化字符串的%字符后面加上一个字符表明将要输出的内容的类型,常见的输出类型包括:d(输出整数)、s(输出字符串)、f(输出浮点数)、e(指数形式输出浮点数)等。 - A,B,C,...:可选参数,表示需要输出的内容。 函数返回值: - 返回输出的字符数。 下面我们通过几个实际例子来更好地理解fprintf函数用法。 实例一: 输出一个字符串 ```Matlab fprintf('Hello World!\n'); ``` 上述代码将在屏幕上输出字符串Hello World! 实例二: 输出整型数值 ```Matlab a = 25; fprintf('a = %d\n',a); ``` 上述代码将在屏幕上输出a = 25 实例三: 输出浮点型数值 ```Matlab b = 3.14159; fprintf('b = %f\n',b); ``` 上述代码将在屏幕上输出b = 3.14159 实例四: 输出指数型数值 ```Matlab c = 1.23e+05; fprintf('c = %e\n',c); ``` 上述代码将在屏幕上输出c = 1.230000e+05 实例五: 将输出内容输出到文件 ```Matlab fid = fopen('test.txt','w'); fprintf(fid,'Hello World!\n'); fclose(fid); ``` 上述代码将结果输出到当前目录下的test.txt文件。 通过以上例子可以看出,MATLAB的fprintf函数是一个非常有用的函数,它可以用来格式化输出各种类型的数据,并且可以将输出内容输出到文件,方便我们对数据进行存储和处理。因此在MATLAB编程过程,我们应该牢记fprintf函数使用方法,以便更方便快捷地输出各种类型的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值