2009-12-05 146 views
2

matlab行事怪异。如果我将变量a和207的值赋值给变量b,然后添加a + b,那么它会给出正确的答案409.现在,如果我减去a-b,它将给出0而不是-5。 btu如果我做202-207(不使用变量a和b)它给我-5。基础matlab帮助

这可能是什么原因造成的?

编辑:它变得奇怪。我只注意到,只有当我从数据矩阵a = data(1,1),b = data(2,1)中赋值202和207时,matlab才给出a-b = 0。如果我直接将值赋给a和b它充当正常

+2

发布你在MATLAB中输入会比描述你做了什么 – 2009-12-05 22:48:36

+1

检查'类(数据)'它必须是无符号整数更为有用的代码.. – Amro 2009-12-05 22:52:16

+2

除非您有充分理由不这样做,否则将您的号码保留为默认(双)格式。无论如何,当使用双精度时,MATLAB完全表示整数(高达2^53-1),所以除了某些内存之外,没有任何成本 - 无论如何这些天都很便宜。 – 2009-12-06 12:00:22

回答

8
a = uint8(202); 
b = uint8(207); 

>> a-b 
ans = 
    0 

>> 202-207 
ans = 
    -5 
+0

我只是把我的整个矩阵从uint8转换成了int8,但是它做了同样的事情。 – anon 2009-12-05 22:56:14

+6

'int8'的范围为[-128,+ 127],所以'a = int8(202)'将存储最大值127。 – Amro 2009-12-05 23:08:38