除了字符串连接函数(详见连接字符串)它将数字数据转换为相应的UTF-8编码字符,还有几个将数字数据格式化为字符串的函数。mat2str
和num2str
转换实数矩阵或复数矩阵,而int2str
转换整数矩阵。int2str
取复数值的实数部分,并将分数值舍入为整数。将数字数据格式化为字符串的一种更灵活的方法是sprintf
函数(详见格式化输出, sprintf).
s =
mat2str (x, n)
¶s =
mat2str (x, n, "class")
¶将实数矩阵、复数矩阵和逻辑矩阵格式化为字符串。
返回的字符串可用于通过使用eval
作用
值的精度从下式给出n如果n是一个标量,矩阵的实部和虚部都打印到相同的精度。否则n1.
定义realpart的精度,以及n2.
定义了虚部的精度。的默认值n是15。
如果参数"class"
则给出的类x以这样的方式包含在字符串中eval
将导致构造同一类的矩阵。
mat2str ([ -1/3 + i/7; 1/3 - i/7 ], [4 2]) ⇒ "[-0.3333+0.14i;0.3333-0.14i]" mat2str ([ -1/3 +i/7; 1/3 -i/7 ], [4 2]) ⇒ "[-0.3333+0i 0+0.14i;0.3333+0i -0-0.14i]" mat2str (int16 ([1 -1]), "class") ⇒ "int16([1 -1])" mat2str (logical (eye (2))) ⇒ "[true false;false true]" isequal (x, eval (mat2str (x))) ⇒ 1
str =
num2str (x)
¶str =
num2str (x, precision)
¶str =
num2str (x, format)
¶将数字(或数组)转换为字符串(或字符数组)。
可选的第二个参数可以给出有效位数(precision)用于输出或格式模板(format)如在sprintf
详见格式化输出).num2str
也可以处理复数。
示例:
num2str (123.456) ⇒ 123.456 num2str (123.456, 4) ⇒ 123.5 s = num2str ([1, 1.34; 3, 3.56], "%5.1f") ⇒ s = 1.0 1.3 3.0 3.6 whos s ⇒ Variables in the current scope: Attr Name Size Bytes Class ==== ==== ==== ===== ===== s 2x8 16 char Total is 16 elements using 16 bytes num2str (1.234 + 27.3i) ⇒ 1.234+27.3i
这个num2str
函数不是很灵活。为了更好地控制结果,请使用sprintf
详见格式化输出).
编程说明:
对于MATLAB兼容性,在返回字符串之前将去掉前导空格。
大于的整数flintmax
可能无法正确显示。
对于复杂x,格式字符串可能只包含一个输出转换规范,而不包含其他内容。否则,结果将是不可预测的。
任何可选format从程序员指定的在没有过时修改的情况下使用。这与MATLAB它干扰了format基于内部启发法。
str =
int2str (n)
¶将整数(或整数数组)转换为字符串(或字符数组)。
int2str (123) ⇒ 123 s = int2str ([1, 2, 3; 4, 5, 6]) ⇒ s = 1 2 3 4 5 6 whos s ⇒ Variables in the current scope: Attr Name Size Bytes Class ==== ==== ==== ===== ===== s 2x7 14 char Total is 14 elements using 14 bytes
这个函数不是很灵活。为了更好地控制结果,请使用sprintf
详见格式化输出).
编程说明:
非整数在显示前四舍五入为整数。只显示复数的实数部分。
d =
str2double (str)
¶将字符串转换为实数或复数。
字符串必须采用以下格式之一,其中a和b为实数,复数单位为'i'
或'j'
:
如果存在,a和/或b的形式为[+-]d[,.]d[[eE][+-]d],其中括号表示可选参数和'd'
表示零或多个数字。特殊输入值Inf
, NaN
和NA
也被接受。
str可以是字符串、字符矩阵或元胞数组。对于字符数组,对每一行重复转换,并返回一个双或复数数组。中的空行s被删除,并且不会在数字数组中返回。对于元胞数组,处理每个字符串,并生成与str返回。
对于无法转换的标量或字符串输入str2double
returnsa NaN。同样,对于字符数组输入str2double
为的任何行返回aNaNs无法转换。对于元胞数组,str2double
为的任何元素返回NaNs转换失败。请注意,混合字符串/数字元胞数组中的数字元素不是字符串,这些元素的转换将失败,并返回NaN。
编程说明:str2double
可以替换str2num
,效率更高,避免了使用的安全风险eval
关于未知数据。
详见: str2num.
x =
str2num (s)
¶[x, state] =
str2num (s)
¶转换字符串(或字符数组)s到一个数字(或数组)。
示例:
str2num ("3.141596") ⇒ 3.141596 str2num (["1, 2, 3"; "4, 5, 6"]) ⇒ 1 2 3 4 5 6
可选的第二输出,state,当转换成功时在逻辑上是正确的。如果转换使数字输出失败,x,为空,并且state是错误的。
小心像str2num
使用eval
函数来进行转换,str2num
将执行字符串中包含的任何代码s使用str2double
以实现更安全、更快的转换。
对于字符串的元胞数组,使用str2double
.
详见: str2double, eval.
d =
bin2dec (str)
¶返回字符串表示的二进制数对应的十进制数str.
例如
bin2dec ("1110") ⇒ 14
空格在转换过程中被忽略,可以用来提高二进制数的可读性。
bin2dec ("1000 0001") ⇒ 129
如果str是一个字符串矩阵,返回一个列向量,每行包含一个转换后的数字str; 无效行的计算结果为NaN。
如果str是字符串的元胞数组,返回一个列向量,其中每个数组元素有一个转换后的数字str.
bstr =
dec2bin (d)
¶bstr =
dec2bin (d, len)
¶返回一个从1和0组成的字符串,表示整数的转换d转换为二进制数。
如果d是矩阵或元胞数组,返回中每个元素一行的字符串矩阵d,用前导零填充到最大值的宽度。
可选的第二个自变量,len,指定结果中的最小位数。
对于的负元素d,返回二的补码的二进制值。根据输入的大小,结果用前导1填充到8、16、32或64位。正输入元素用相同宽度的前导零填充。
示例:
dec2bin (14) ⇒ "1110" dec2bin (-14) ⇒ "11110010"
编程提示:dec2bin
丢弃输入的任何小数部分。如果您也需要转换小数部分,请调用dec2base
小数位数为非零。您也可以使用fix
或round
以确保可预测的舍入行为。
hstr =
dec2hex (d)
¶hstr =
dec2hex (d, len)
¶返回表示整数转换的字符串d到十六进制(以16为基数)。
如果d为负,返回的十六进制补码d.
如果d是矩阵或元胞数组,返回中每个元素一行的字符串矩阵d,用前导零填充到最大值的宽度。
可选的第二个自变量,len,指定结果中的最小位数。
示例:
dec2hex (2748) ⇒ "ABC" dec2hex (-2) ⇒ "FE"
编程提示:dec2hex
丢弃输入的任何小数部分。如果您也需要转换小数部分,请调用dec2base
小数位数为非零。您也可以使用fix
或round
以确保可预测的舍入行为。
d =
hex2dec (str)
¶返回从字符串表示的十六进制数对应的整数str.
例如
hex2dec ("12B") ⇒ 299 hex2dec ("12b") ⇒ 299
如果str是一个字符串矩阵,返回一个列向量,每行包含一个转换后的数字str; 无效行的计算结果为NaN。
如果str是字符串的元胞数组,返回一个列向量,其中每个数组元素有一个转换后的数字str.
str =
dec2base (d, base)
¶str =
dec2base (d, base, len)
¶str =
dec2base (d, base, len, decimals)
¶返回基中的符号字符串base与值相对应d.
dec2base (123, 3) ⇒ "11120"
如果d为负数,则结果将表示d在补语中。例如,负二进制数在二的补码中,并且对其他碱基是正交的。
如果d是矩阵或元胞数组,返回中每个元素有一行的字符串矩阵d,用前导零填充到最大值的宽度。
如果base是一个字符串,然后是的字符base用作的数字的符号d.空格(空格、制表符、换行符等)不能用作符号。
dec2base (123, "aei") ⇒ "eeeia"
可选的第三个自变量,len,指定结果的整数部分中的最小位数。如果省略这一点,那么dec2base
使用足够的数字来适应输入。
可选的第四个自变量,decimals,指定表示输入小数部分的位数。如果忽略此项,则将其设置为零,并且dec2base
返回用于向后兼容性的整数输出。
dec2base (100*pi, 16) ⇒ "13A" dec2base (100*pi, 16, 4) ⇒ "013A" dec2base (100*pi, 16, 4, 6) ⇒ "013A.28C59D" dec2base (-100*pi, 16) ⇒ "EC6" dec2base (-100*pi, 16, 4) ⇒ "FEC6" dec2base (-100*pi, 16, 4, 6) ⇒ "FEC5.D73A63"
编程提示:将负输入传递给时dec2base
,最好显式指定所需输出的长度。
d =
base2dec (str, base)
¶转换str从基数中的一串数字base到小数位数(以10为基数)。
base2dec ("11120", 3) ⇒ 123
如果str是一个字符串矩阵,返回一个列向量,每行一个值为str。如果一行包含无效符号,则相应的值将为NaN。
如果str是字符串的元胞数组,返回中每个数组元素一个值的列向量str.
如果base是一个字符串,的字符base用作的数字符号str.Space(“”)不能用作asymbol。
base2dec ("yyyzx", "xyz") ⇒ 123
s =
num2hex (n)
¶s =
num2hex (n, "cell")
¶将数字数组转换为十六进制字符串数组。
例如
num2hex ([-1, 1, e, Inf]) ⇒ "bff0000000000000 3ff0000000000000 4005bf0a8b145769 7ff0000000000000"
如果参数n是单精度数字或向量,返回的字符串长度为8。例如
num2hex (single ([-1, 1, e, Inf])) ⇒ "bf800000 3f800000 402df854 7f800000"
带有可选的第二个参数"cell"
,返回字符串的元胞数组,而不是字符数组。
n =
hex2num (s)
¶n =
hex2num (s, class)
¶将十六进制字符数组或字符串元胞数组类型转换为数字数组。
默认情况下,输入数组被解释为表示双精度值的十六进制数字。如果给定的字符少于16个,则字符串用右填充'0'
字符。
给定字符串矩阵,hex2num
将每一行视为一个单独的数字。
hex2num (["4005bf0a8b145769"; "4024000000000000"]) ⇒ [2.7183; 10.000]
可选的第二个参数class可以用于使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]
[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, …)
¶此函数已过时。使用textscan
相反
从字符串中读取数据。
字符串str被拆分为与中的指定符重复匹配的单词format第一个单词与第一个值匹配,第二个单词与第二个值匹配等等。如果单词多于值,则重复该过程,直到处理完所有单词为止。
字符串format描述中的单词str应该进行解析。它可以包含以下值的任意组合:
%s
该单词被解析为字符串。
%f
%n
该单词被解析为数字并转换为双精度。
%d
%u
该单词被解析为数字并转换为int32。
%*
%*f
%*s
该单词被跳过。
对于%s和%d、%f、%n、%u以及相关的%*s…值,可选宽度可以指定为%Ns等,其中n是大于1的整数。对于%f,允许使用格式值,如%n.Mf。
literals
此外,该格式可能包含文字字符串;这些将在阅读过程中跳过。
对应于第一个值的解析词在第一个输出参数中返回,对于其余的值也是如此。
默认情况下,format是f
,意味着从中读取数字str。如果str仅包含数字字段。
例如,字符串
str=“\兔八哥5.5\鸭子达菲-7.5e-5\企鹅Tux 6
可以使用读取
[a, b, c]=strread(str,“%s%s%f”);
可选数字参数format_repeat可用于限制读取的项目数量:
(默认值)读取所有字符串直到结束。
读取N次nargout项目。0(零)是的可接受值format_repeat.
的行为strread
可以通过属性值对进行更改。可识别以下属性:
"commentstyle"
的部分str被视为注释,将被跳过。value是注释样式,可以是以下任意一种。
"shell"
一切从#
跳过最接近行尾的字符。"c"
之间的一切/*
和*/
被跳过。"c++"
一切从//
跳过最接近行尾的字符。"matlab"
一切从%
跳过最接近行尾的字符。"delimiter"
中的任何字符value将用于拆分str转换为单词(默认值=任何空白)。请注意,除非"%s"
提供了格式转换指定器;详见"whitespace"
下面的参数。分隔符字符集不能为空;如果需要,Octave替换aspace作为分隔符。
"emptyvalue"
对于非空格分隔的数据中的空数值,要返回的值。默认值为NaN。当数据类型不支持NaN(例如int32)时,默认值为零。
"multipledelimsasone"
将一系列连续的分隔符(中间没有空格)视为单个分隔符。连续分隔符序列不需要垂直排列"aligned"
.
"treatasempty"
处理中出现的单个字符串(用分隔符或空格包围)value作为缺失值。
"returnonerror"
如果valuetrue(1,默认值),忽略读取错误并正常返回。如果为false(0),则报告错误。
"whitespace"
中的任何字符value将被解释为空白并进行修剪;定义空白的字符串必须用双引号括起来,以便正确处理特殊字符,如"\t"
.在每个数据字段中,多个连续的空白字符被折叠到一个空格中,并删除前导和尾随空白。空白的默认值为"
\b\r\n\t"
(注意空格)。除非至少有一个空格,否则空格总是添加到分隔符集"%s"
格式转换值已发布;在这种情况下,只有在中明确指定的空白"delimiter"
保留为分隔符,并从空白字符集中删除。如果空白字符要保持原样(例如字符串),则指定一个空值(即。,对于
"whitespace"
; 显然,空白不能作为分隔符。
当中的字数str与格式转换值数量的精确倍数不匹配,strread的行为取决于的最后一个字符str:
"\n"
数据列填充有空字段或NaN,以便所有列的长度相等
"\n"
数据列未填充;strread返回长度不等的列
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2