图片缩略图

数字的科学前缀

版本3.2.1 (17.9 KB) 斯蒂芬。
将公制前缀字符串转换为数值(SI/工程)。附加:二进制前缀!

530下载

更新2020年7月10

查看许可协议

函数SIP2NUM将带有度量前缀(即SI前缀或工程前缀)的字符串转换为数值。例如,'1 k'被转换为1000。

在MATLAB FEX上测试了提交的度量前缀(请参见确认),但没有找到一个能正确转换所有值的函数后,我编写了自己的函数。然后对它们进行了详尽的测试,以确认它们确实给出了正确的输出。

这个提交:
*自动检测前缀,或者将其指定为名称或符号。
*检测数字包括+/-符号,十进制数字和指数e符号。
*检测字符串中的零或多个数字。
*返回按检测到的数字+前缀拆分的输入字符串部分。
*返回在数字中检测到的有效数字的数量。

###奖励功能###

函数BIP2NUM将二进制前缀字符串转换为数字,例如将“1ki”转换为1024。

函数RKM2NUM从RKM代码转换为数值,例如“1k2”转换为1200。

###反向转换###

要将数字前缀字符串转换为公制前缀字符串,请执行以下操作:

<//www.tianjin-qmedu.com/matlabcentral/fileexchange/33174-number-to-scientific-prefix >

###度量前缀示例###

>>sip2num('10k')或sip2num('10.0ko')或sip2num('10000')或sip2num('1e4'))
ans = 10000

>>[val,spl]=sip2num(功率:200兆瓦)
val = 200000000
spl = {'Power: ','watt'}

>> [val,spl,sgf] = sip2num('从-3.6 MV到+1.24kV电位差')
val = (1240, -3600000)
spl = {'from ','V to ','V电位差'}
sgf=[2,3]

>> [val,spl] = sip2num('100米','米')%尝试没有第二个选项。
val = 100
spl ={”、“计”}

>>sip2num(num2sip(9e12))%9tera==9e12==9*1000^4
ans = 9000000000000

###二进制前缀示例###

>> bip2num('10 Ki') OR bip2num('10.0 kibi') OR bip2num('10240') OR bip2num('1.024e4')
ans = 10240

>>[val,spl]=bip2num('内存:200兆字节')
val = 209715200
spl={'Memory:','byte'}

>> [val,spl,sgf] = bip2num('从-3.6 MiB到+1.24KiB数据允许。')
val=[-3774873.61269.76]
spl={'From','B to','B数据余量。}
sgf=[2,3]

>> [val,spl] = bip2num('100像素','像素')%不使用第二个选项尝试。
val = 100
spl={'','Pixel'}

>> bip2num(num2bip(pow2(9,40))) % 9 tebi == pow2(9,40) == 9*1024^4
ans = 9895604649984

###度量前缀###

符号/名称
1000^-8 | y / yocto
1000^-7 | z / zepto
1000^- 6| a / atto
1000^-5 | f / femto
1000^-4 | p / pico
1000^-3|n/纳米
1000^-2 |µ/微
1000^-1 | m /毫厘
1000^0 |
1000^1|k/千克
1000^2米/兆瓦
1000^3 | G / giga
1000^4 | T / tera
1000^5 | P / peta
1000^6 | E/exa
1000^7 | Z /
1000^8 | Y / yotta

###二进制前缀(IEC 60027-2 A.2和ISO/IEC 80000- 13:08) ### #

符号/名称
1024 ^ 0 |
1024^1 | Ki / kibi
1024^2 | Mi / mebi
1024^3 | Gi / gibi
1024^4|Ti/tebi
1024^5 | Pi / pebi
1024^6 | Ei / exbi
1024^7 | Zi / zebi
1024^8 |易/尤比

###注释###

这些函数已经在许多边缘情况下进行了广泛的测试,特别注意确保指数符号的正确处理。与MATLAB文件交换中提供的类似提交相比,这些函数正确:
*解析负字符串(请尝试“-1”)。
解析任何E-notation值的组合(尝试'1e0', '1e0 k', '1e30')。
*接受不同的“微”符号字符:U+0075或U+00B5或U+03BC,

引用作为

斯蒂芬(2021)。数字的科学前缀(//www.tianjin-qmedu.com/matlabcentral/fileexchange/53886-scientific-prefix-to-number),MATLAB中心文件交换