SIP2NUM、BIP2NUM举例

这个函数SIP2NUM将字符向量(包含带有可选度量前缀的数字)转换为数字,例如'1 k' -> 1000。该函数可以检测和转换字符串中的多个数字,包括带度量前缀的和不带度量前缀的。SIP2NUM返回数值、由检测到的数字(和前缀)分割的字符串部分,以及每个检测到的数字中检测到的有效位数。

的发展SIP2NUM是由于缺乏编写良好的函数来提供这种转换:FEX上的许多可用函数不符合SI标准,或者使用有bug的转换算法,或者只是非常慢。SIP2NUM已经针对大量测试用例进行了测试,包括许多边缘用例和所有可选参数。

SIP2NUMBIP2NUM这个词的文档字符串是指一个1xN字符向量,而不是MATLAB字符串类。

内容

基本用法

在许多情况下SIP2NUM可以用一个字符串值来调用:

sip2num (“1.2 k”) sip2num (“3.45 gb”) sip2num ('6.7µV和89 mOhm'
Ans = 1200 Ans = 3450000000 Ans = 6.7e-06 0.089

第二个输出:分裂字符串

SIP2NUM也返回由检测到的数字分割的字符串部分:

(num, spl) = sip2num (“我用了23 MV 5毫秒。”
num = 23000000 0.005 spl = 'I applied 'V for 's.'

第三输出:有效数字

SIP2NUM返回检测到的数字的有效位数:

(num ~,山东)= sip2num ('987.6 kV还是0.99 MV ?'
Num = 987600 990000 SGF = 4

第二输入:指定单位

有些单元可能会被误认为是前缀,在这种情况下,第二个输入参数可以用来强制将单元标识为前缀。可选地提供units字符串,这些单元将被忽略:

(num, spl) = sip2num (“100米”% 'm'被错误地标识为前缀(num, spl) = sip2num (“100米”“米”%指定获得正确值的单位
Num = 0.1 SPL = " eter " Num = 100 SPL = " meter "

第二输入:符号或全名

默认情况下SIP2NUM将尝试匹配前缀符号或完整前缀名。可选的第二个输入参数可用于强制SIP2NUM只匹配前缀符号或前缀名:

(num, spl) = sip2num (100毫假)仅%匹配符号(num, spl) = sip2num (100毫,真正的)%只匹配前缀名(num, spl) = sip2num (“100”,真正的)%不能匹配名称->只匹配数字
Num = 0.1 SPL = " 'illi' Num = 0.1 SPL = '' '' Num = 100 SPL = " 'm'

微的象征

为了方便SIP2NUM识别三个不同的“微”字符:

sip2num (' 1 u '% ASCII (U + 0075)'拉丁语小写字母u 'sip2num (“µ1”% iso 8859-1 (u + 00b5)“微信号”sip2num (sprintf (“1 \ xB5”))% (U + 00 b5)“微信号”sip2num (sprintf (“1 \ x3BC”))%(公元前U + 03)希腊小写字母mu
Ans = 1e-06 Ans = 1e-06 Ans = 1e-06

空格字符

为了方便SIP2NUM标识许多不同的空格字符,例如:

sip2num (sprintf (“1 \ x0020u”))% (U + 0020)“空间”sip2num (sprintf (“1 \ x00A0u”))% (U + 00 a0)“不中断空间”sip2num (sprintf (“1 \ x2007u”))% (U + 2007)“数字空间”sip2num (sprintf (“1 \ x202Fu”))% (U + 202 f)“窄不中断空间”sip2num (sprintf (“1 \ x205Fu”))% (U + 205 f)“中等数学空间”
Ans = 1e-06 Ans = 1e-06 Ans = 1e-06

奖金:BIP2NUM二进制前缀的函数

提交包含奖金功能BIP2NUM:将带有前缀的字符串转换为指定的ISO 80000的数值二进制前缀而不是公制前缀。二进制前缀用于计算机存储器。

这个函数BIP2NUM有完全相同的论点SIP2NUM

bip2num (“0.999 kibi”) [num,spl,sgf] = bip2num(“1.001 kibi”,真正的)
Ans = 1022.976 num = 1025.024 SPL = '' '' SGF = 4

奖金:RKM2NUMRKM-Code函数

提交包含奖金功能RKM2NUM:将带有前缀的字符串转换为指定的IEC 60062的数值RKM代码而不是公制前缀。RKM代码用于电阻器和电容器。

rkm2num (“1 r2”) rkm2num (“4 k7”
Ans = 1.2 Ans = 4700

反向转换:数字到字符串

的函数NUM2SIPNUM2BIPNUM2RKM从数字转换为字符串:

num2bip (1280) num2sip (1250) num2rkm (1250)
ans = 1.25 Ki ans = 1.25 k ans = 1k25