zoukankan      html  css  js  c++  java
  • matlab中upper 将字符串转换为大写

    参考: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
    ';
    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 指定输出中每行的第二个值为浮点数,字段宽度为八位数,包括小数点后的三位数。 为新起一行的控制字符。

     
     

    将双精度值输出为整数

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

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

    formatSpec 输入中的 %d 将向量 round(a) 中的每个值作为有符号整数输出。 为新起一行的控制字符。

     
     

    将表格数据写入文本文件

    将指数函数的短表写入到名为 exp.txt 的文本文件。

    x = 0:.1:1;
    A = [x; exp(x)];
    
    fileID = fopen('exp.txt','w');
    fprintf(fileID,'%6s %12s
    ','x','exp(x)');
    fprintf(fileID,'%6.2f %12.8f
    ',A);
    fclose(fileID);

    第一个对 fprintf 的调用输出标题文本 xexp(x),第二个调用输出变量 A 的值。

    如果打算使用 Microsoft® 记事本读取文件,请使用 ' ' 而不是 ' ' 移到新行。例如,将对 fprintf 的调用替换为下列项:

    fprintf(fileID,'%6s %12s
    ','x','exp(x)');
    fprintf(fileID,'%6.2f %12.8f
    ',A);

    MATLAB® 导入函数、所有 UNIX® 应用程序以及 Microsoft Word 和写字板都将 ' ' 识别为换行指示符。

    通过 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
    ',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>
    ',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

      退格符

      

      换页符

      f

      换行符

      回车符

      水平制表符

      垂直制表符

      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 数组,但不在 GPU 上运行。

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

  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/MCSFX/p/11699547.html
Copyright © 2011-2022 走看看