不明原因的警告创建矢量

时间:2011-08-29 10:34:21

标签: matlab

下面是我创建两个矢量时的终端打印输出。有没有人知道为什么第二次调用 ones()会发出警告,而第一次调用没有?

>> p1

p1 =

    0.7000

>> p2

p2 =

    0.3000

>> whos p1
  Name      Size            Bytes  Class     Attributes

  p1        1x1                 8  double              

>> whos p2
  Name      Size            Bytes  Class     Attributes

  p2        1x1                 8  double              

>> N

N =

   100

>> T1 = ones(N*p1,1);
>> T2 = ones(N*p2,1);
Warning: Size vector should be a row vector with integer elements. 

1 个答案:

答案 0 :(得分:5)

是的,您可能认为100 * .3将是一个整数,但事实并非如此。这是因为0.3在所使用的IEEE数字表示中没有精确地存储0.3。大多数此类十进制数字并未完全表示。请记住,数字以二进制形式存储。在matlab中输入0.3时存储的内容的真实十进制表示为:

0.299999999999999988897769753748434595763683319091796875

接近0.3,但并非如此。

http://www.mit.edu/~pwb/cssm/matlab-faq_toc.html

http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

有时结果会变成一个完整的整数。