图片缩略图

科学数字前缀

版本3.2.1 (17.9 KB) 斯蒂芬。
将度量前缀字符串转换为数值(SI/engineering)。奖金:二进制前缀!

521下载

更新2020年7月10

查看许可协议

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

在MATLAB FEX上测试了metric-prefix提交(参见致谢),没有找到一个能正确转换所有值的函数后,我编写了自己的函数。然后对它们进行全面测试,以确认它们实际上给出了正确的输出。

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

###奖励功能###

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

函数RKM2NUM从RKM代码转换为数字,例如'1k2'转换为1200。

###反向转换###

将数字转换为以metric为前缀的字符串:

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

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

>> sip2num('10 k') OR sip2num('10.0 kg ') OR sip2num('10000') OR sip2num('1e4')
ans = 10000

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

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

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

>> sip2num(num2sip(9e12)) % 9 tera == 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('内存:200mebibyte ')
val = 209715200
spl = {'Memory: ','byte'}

>> [val,spl,sgf] = bip2num('从-3.6 MiB到+1.24KiB数据允许。')
val = [-3774873.6, 1269.76]
spl = {'From ','B to ','B data allowance.'}
山东=(2、3)

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

>> 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 / nano
1000^-2 |µ/微
1000^-1 | m /毫厘
1000 ^ 0 |
1000^1 | k / kg
1000^2 | M / mega
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
10 ^4 | Ti / tebi
1024^5 | Pi / pebi
1024^6 | Ei / exbi
1024^7 | Zi / zebi
1024^8 | Yi / yobi

# # # # # #

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

引用作为

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