5.4.2数值数据和字符串

除了字符串连接函数(详见连接字符串)它将数字数据转换为相应的UTF-8编码字符,还有几个将数字数据格式化为字符串的函数。mat2strnum2str转换实数矩阵或复数矩阵,而int2str转换整数矩阵。int2str取复数值的实数部分,并将分数值舍入为整数。将数字数据格式化为字符串的一种更灵活的方法是把格式数据写成串函数(详见格式化输出, 把格式数据写成串).

 
: s = mat2str (x, n)
: s = mat2str (x, n, "class")

将实数矩阵、复数矩阵和逻辑矩阵格式化为字符串。

返回的字符串可用于通过使用eval作用

值的精度从下式给出n如果n是一个标量,矩阵的实部和虚部都打印到相同的精度。否则n1.定义realpart的精度,以及n2.定义了虚部的精度。的默认值n是15。

如果参数则给出的类x以这样的方式包含在字符串中eval将导致构造同一类的矩阵。

mat2str([-1/3+i/7;1/3-i/7],[42])⇒ “[-0.3333+0.14i;0.3333-0.14i]”mat2str([-1/3+i/7;1/3-i/7],[42])⇒ “[-0.3333+0i 0+0.14i;0.3333+0i-0-0.14i]”mat2str(int16([1-1]),“class”)⇒ “int16([1-1])”mat2str(逻辑(eye(2))⇒ “[true-false;false true]”isequal(x,eval(mat2str(x))⇒ 1.

详见: 把格式数据写成串, num2str, int2str.

 
: str = num2str (x)
: str = num2str (x, precision)
: str = num2str (x, format)

将数字(或数组)转换为字符串(或字符数组)。

可选的第二个参数可以给出有效位数(精确)用于输出或格式模板(format)如在把格式数据写成串详见格式化输出).num2str也可以处理复数。

示例:

数字2str(123.456)⇒ 123.456编号2(123.456,4)⇒ 123.5s=num2str([11.34;3,3.56],“%5.1f”)⇒ s=1.0 1.3 3.0 3.6谁的s⇒ 当前作用域中的变量:Attr Name Size Bytes Class=============s 2x8 16 char总计为16个元素,使用16个bytesnum2str(1.234+27.3i)⇒ 1.234+27.3i

这个num2str函数不是很灵活。为了更好地控制结果,请使用把格式数据写成串详见格式化输出).

编程说明:

对于MATLAB兼容性,在返回字符串之前将去掉前导空格。

大于的整数燧石可能无法正确显示。

对于复杂x,格式字符串可能只包含一个输出转换规范,而不包含其他内容。否则,结果将是不可预测的。

任何可选format从程序员指定的在没有过时修改的情况下使用。这与MATLAB它干扰了format基于内部启发法。

详见: 把格式数据写成串, int2str, mat2str.

 
: str = int2str (n)

将整数(或整数数组)转换为字符串(或字符数组)。

int2str(123)⇒ 123s=int2str([1,2,3;4,5,6])⇒ s=1 2 3 4 5 6谁⇒ 当前作用域中的变量:属性名称大小字节类==============s 2x7 14 char总共是14个元素,使用14个字节

这个函数不是很灵活。为了更好地控制结果,请使用把格式数据写成串详见格式化输出).

编程说明:

非整数在显示前四舍五入为整数。只显示复数的实数部分。

详见: 把格式数据写成串, num2str, mat2str.

 
: d = str2double (str)

将字符串转换为实数或复数。

字符串必须采用以下格式之一,其中a和b为实数,复数单位为ij:

  • a+bi
  • a+b*i
  • a+i*b
  • bi+a
  • b*i+a
  • i*b+a

如果存在,a和/或b的形式为[+-]d[,.]d[[eE][+-]d],其中括号表示可选参数和d表示零或多个数字。特殊输入值Inf, NaNNA也被接受。

str可以是字符串、字符矩阵或元胞数组。对于字符数组,对每一行重复转换,并返回一个双或复数数组。中的空行s被删除,并且不会在数字数组中返回。对于元胞数组,处理每个字符串,并生成与str返回。

对于无法转换的标量或字符串输入str2双returnsa NaN。同样,对于字符数组输入str2双为的任何行返回aNaNs无法转换。对于元胞数组,str2双为的任何元素返回NaNs转换失败。请注意,混合字符串/数字元胞数组中的数字元素不是字符串,这些元素的转换将失败,并返回NaN。

编程说明:str2双可以替换str2num,效率更高,避免了使用的安全风险eval关于未知数据。

详见: str2num.

 
: x = str2num (s)
: [x, state] = str2num (s)

转换字符串(或字符数组)s到一个数字(或数组)。

示例:

str2num(“3.141596”)⇒ 3.141596str2num([“1,2,3”;“4,5,6”])⇒ 1  2  3         4  5  6

可选的第二输出,状态,当转换成功时在逻辑上是正确的。如果转换使数字输出失败,x,为空,并且状态是错误的。

小心str2num使用eval函数来进行转换,str2num将执行字符串中包含的任何代码s使用str2双以实现更安全、更快的转换。

对于字符串的元胞数组,使用str2双.

详见: str2双, eval.

 
: d = bin2dec (str)

返回字符串表示的二进制数对应的十进制数str.

例如

bin2dec(“1110”)⇒ 14

空格在转换过程中被忽略,可以用来提高二进制数的可读性。

bin2dec(“1000 0001”)⇒ 129

如果str是一个字符串矩阵,返回一个列向量,每行包含一个转换后的数字str; 无效行的计算结果为NaN。

如果str是字符串的元胞数组,返回一个列向量,其中每个数组元素有一个转换后的数字str.

详见: 12月2日, base2dec, hex2dec.

 
: bstr = dec2bin (d)
: bstr = dec2bin (d, len)

返回一个从1和0组成的字符串,表示整数的转换d转换为二进制数。

如果d是矩阵或元胞数组,返回中每个元素一行的字符串矩阵d,用前导零填充到最大值的宽度。

可选的第二个自变量,len,指定结果中的最小位数。

对于的负元素d,返回二的补码的二进制值。根据输入的大小,结果用前导1填充到8、16、32或64位。正输入元素用相同宽度的前导零填充。

示例:

12月2日(14)⇒ 12月2日“1110”(-14)⇒ "11110010

编程提示:12月2日丢弃输入的任何小数部分。如果您也需要转换小数部分,请调用dec2基础小数位数为非零。您也可以使用修理圆形的以确保可预测的舍入行为。

详见: bin2dec, dec2基础, 12月2日.

 
: hstr = dec2hex (d)
: hstr = dec2hex (d, len)

返回表示整数转换的字符串d到十六进制(以16为基数)。

如果d为负,返回的十六进制补码d.

如果d是矩阵或元胞数组,返回中每个元素一行的字符串矩阵d,用前导零填充到最大值的宽度。

可选的第二个自变量,len,指定结果中的最小位数。

示例:

12月2日(2748)⇒ “ABC”12月2日(-2)⇒ “FE

编程提示:12月2日丢弃输入的任何小数部分。如果您也需要转换小数部分,请调用dec2基础小数位数为非零。您也可以使用修理圆形的以确保可预测的舍入行为。

详见: hex2dec, dec2基础, 12月2日.

 
: d = hex2dec (str)

返回从字符串表示的十六进制数对应的整数str.

例如

hex2dec(“12B”)⇒ 299己基2秒(“12b”)⇒ 299

如果str是一个字符串矩阵,返回一个列向量,每行包含一个转换后的数字str; 无效行的计算结果为NaN。

如果str是字符串的元胞数组,返回一个列向量,其中每个数组元素有一个转换后的数字str.

详见: 12月2日, base2dec, bin2dec.

 
: str = dec2base (d, base)
: str = dec2base (d, base, len)
: str = dec2base (d, base, len, decimals)

返回基中的符号字符串基础与值相对应d.

dec2碱基(123,3)⇒ "11120

如果d为负数,则结果将表示d在补语中。例如,负二进制数在二的补码中,并且对其他碱基是正交的。

如果d是矩阵或元胞数组,返回中每个元素有一行的字符串矩阵d,用前导零填充到最大值的宽度。

如果基础是一个字符串,然后是的字符基础用作的数字的符号d.空格(空格、制表符、换行符等)不能用作符号。

12月2日基础(123,“aei”)⇒ “eeeia

可选的第三个自变量,len,指定结果的整数部分中的最小位数。如果省略这一点,那么dec2基础使用足够的数字来适应输入。

可选的第四个自变量,小数,指定表示输入小数部分的位数。如果忽略此项,则将其设置为零,并且dec2基础返回用于向后兼容性的整数输出。

dec2碱基(100*pi,16)⇒ “13A”dec2基准(100*pi,16,4)⇒ “013A”dec2碱基(100*pi,16,4,6)⇒ “013A.28C59D”dec2碱基(-100*pi,16)⇒ “EC6”dec2碱基(-100*pi,16,4)⇒ “FEC6”dec2碱基(-100*pi,16,4,6)⇒ “FEC5.D73A63

编程提示:将负输入传递给时dec2基础,最好显式指定所需输出的长度。

详见: base2dec, 12月2日, 12月2日.

 
: d = base2dec (str, base)

转换str从基数中的一串数字基础到小数位数(以10为基数)。

base2dec(“11120”,3)⇒ 123

如果str是一个字符串矩阵,返回一个列向量,每行一个值为str。如果一行包含无效符号,则相应的值将为NaN。

如果str是字符串的元胞数组,返回中每个数组元素一个值的列向量str.

如果基础是一个字符串,的字符基础用作的数字符号str.Space(“”)不能用作asymbol。

base2dec(“yyyzx”、“xyz”)⇒ 123

详见: dec2基础, bin2dec, hex2dec.

 
: s = num2hex (n)
: s = num2hex (n, "cell")

将数字数组转换为十六进制字符串数组。

例如

num2hex([-1,1,e,Inf])⇒ “bff00000000000003ff00000000000004005bf0a8b145769 7ff0000000000000

如果参数n是单精度数字或向量,返回的字符串长度为8。例如

num2hex(单个([-1,1,e,Inf]))⇒ “bf800000 3f800000 402df854 7f800000

带有可选的第二个参数单间牢房,返回字符串的元胞数组,而不是字符数组。

详见: 己基2num, hex2dec, 12月2日.

 
: n = hex2num (s)
: n = hex2num (s, class)

将十六进制字符数组或字符串元胞数组类型转换为数字数组。

默认情况下,输入数组被解释为表示双精度值的十六进制数字。如果给定的字符少于16个,则字符串用右填充0字符。

给定字符串矩阵,己基2num将每一行视为一个单独的数字。

hex2num([“4005bf0a8b145769”;“40240000000000000”])⇒ [2.7183; 10.000]

可选的第二个参数可以用于使inputarray被解释为不同的值类型。可能的值为

参数 字符
int8 2
uint8 2
int16 4
uint16 4
int32 8
uint32 8
int64 16
uint64 16
char 2
single 8
double 16

例如

hex2num([“402df854”;“41200000”],“single”)⇒ [2.7183; 10.000]

详见: num2hex, hex2dec, 12月2日.

 
: [a, …] = strread (str)
: [a, …] = strread (str, format)
: [a, …] = strread (str, format, format_repeat)
: [a, …] = strread (str, format, prop1, value1, …)
: [a, …] = strread (str, format, format_repeat, prop1, value1, …)

此函数已过时。使用文本扫描相反

从字符串中读取数据。

字符串str被拆分为与中的指定符重复匹配的单词format第一个单词与第一个值匹配,第二个单词与第二个值匹配等等。如果单词多于值,则重复该过程,直到处理完所有单词为止。

字符串format描述中的单词str应该进行解析。它可以包含以下值的任意组合:

s

该单词被解析为字符串。

f
n

该单词被解析为数字并转换为双精度。

d
u

该单词被解析为数字并转换为int32。

%*
f
s

该单词被跳过。

对于%s和%d、%f、%n、%u以及相关的%*s…值,可选宽度可以指定为%Ns等,其中n是大于1的整数。对于%f,允许使用格式值,如%n.Mf。

字面量

此外,该格式可能包含文字字符串;这些将在阅读过程中跳过。

对应于第一个值的解析词在第一个输出参数中返回,对于其余的值也是如此。

默认情况下,formatf,意味着从中读取数字str。如果str仅包含数字字段。

例如,字符串

str=“\兔八哥5.5\鸭子达菲-7.5e-5\企鹅Tux 6

可以使用读取

[a, b, c]=strread(str,“%s%s%f”);

可选数字参数格式_泥炭可用于限制读取的项目数量:

-1

(默认值)读取所有字符串直到结束。

N

读取N次nargout项目。0(零)是的可接受值格式_泥炭.

的行为strread可以通过属性值对进行更改。可识别以下属性:

注释风格

的部分str被视为注释,将被跳过。value是注释样式,可以是以下任意一种。

  • 一切从#跳过最接近行尾的字符。
  • c之间的一切/**/被跳过。
  • c一切从//跳过最接近行尾的字符。
  • matlab一切从%跳过最接近行尾的字符。
  • 用户提供的。两个参数:(1)一个字符串,或1x1数组字符串:跳过它右边的所有内容;(2) 2x1数组字符串数组:跳过左右字符串之间的所有内容。
分隔符

中的任何字符value将用于拆分str转换为单词(默认值=任何空白)。请注意,除非s提供了格式转换指定器;详见空白下面的参数。分隔符字符集不能为空;如果需要,Octave替换aspace作为分隔符。

空值

对于非空格分隔的数据中的空数值,要返回的值。默认值为NaN。当数据类型不支持NaN(例如int32)时,默认值为零。

多重delimsasone

将一系列连续的分隔符(中间没有空格)视为单个分隔符。连续分隔符序列不需要垂直排列对齐.

治疗无效

处理中出现的单个字符串(用分隔符或空格包围)value作为缺失值。

returnenerror

如果valuetrue(1,默认值),忽略读取错误并正常返回。如果为false(0),则报告错误。

空白

中的任何字符value将被解释为空白并进行修剪;定义空白的字符串必须用双引号括起来,以便正确处理特殊字符,如\t.在每个数据字段中,多个连续的空白字符被折叠到一个空格中,并删除前导和尾随空白。空白的默认值为\b\r\n\t(注意空格)。除非至少有一个空格,否则空格总是添加到分隔符集s格式转换值已发布;在这种情况下,只有在中明确指定的空白分隔符保留为分隔符,并从空白字符集中删除。如果空白字符要保持原样(例如字符串),则指定一个空值(即。,对于空白; 显然,空白不能作为分隔符。

当中的字数str与格式转换值数量的精确倍数不匹配,strread的行为取决于的最后一个字符str:

最后一个字符=n

数据列填充有空字段或NaN,以便所有列的长度相等

最后一个字符不是n

数据列未填充;strread返回长度不等的列

详见: 文本扫描, sscanf.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号