MATLAB中的科学记数法

时间:2015-07-19 18:36:19

标签: matlab scientific-notation

假设我有一个包含以下元素的数组: dst.pixels=dst.pixels.byteswap(True).newbyteorder()

现在,有没有办法单独抓取 1.0e+14 * 1.3325 1.6485 2.0402 1.0485 1.2027 2.0615 1.7432 1.9709 1.4807 0.9012(基数和指数)? 如果我1.0e+14 *,那么这将返回arr(10)而不是9.0120e+13

假设问题是抓住数组中系数小于1的任何元素。有没有办法获得0.9012e+14,以便我可以1.0e+14

2 个答案:

答案 0 :(得分:1)

我假设你想要字符串输出。

a表示输入数值数组。你可以这样做,如果你不介意使用evalceval的变体,这被认为是不好的做法):

s = evalc('disp(a)');
s = regexp(s, '[\de+-\.]+', 'match');

这将生成一个包含所需字符串的单元格数组。

示例:

>> a = [1.2e-5 3.4e-6]
a =
   1.0e-04 *
    0.1200    0.0340
>> s = evalc('disp(a)');
>> s = regexp(s, '[\de+-\.]+', 'match')
s = 
    '1.0e-04'    '0.1200'    '0.0340'

答案 1 :(得分:-1)

Here是阿兰的原始答案。

  

基础数学可以告诉你:

     

地板(日志10(N))

     

数字的日志基数10告诉您大约在该数字前面的小数位数。

     

例如,99987123459823754是9.998E + 016

     

log10(99987123459823754)是16.9999441,其最低点是16 - 它基本上可以告诉你“科学记数法中的指数是16,非常接近17”。

现在您拥有科学记数法的指数。这应该可以让你达到你的目标;-)。

根据您对指数和数字的要求,您还可以定义自己的方法。 this主题中描述了一个示例。