2009-12-05 115 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