मैंने कल का हिस्सा बिताया और आज कुछ मैटलैब कोड में एक बग को ट्रैक किया। मैंने सोचा था कि मेरी समस्या इंडेक्सिंग थी (कई संरचनाओं के साथ जिन्हें मैंने परिभाषित नहीं किया था और अभी भी उपयोग किया जा रहा है), लेकिन यह एक अतिप्रवाह बग साबित हुआ। मैं एक बहुत ही विशेष कारण से इस चूक:Matlab में अतिप्रवाह बग को कैसे पहचानें?
>> uint8(2) - uint8(1)
ans =
1
>> uint8(2) - uint8(2)
ans =
0
>> uint8(2) - uint8(3)
ans =
0
मैं अपेक्षा की होगी -1
(या 255
) की तरह कुछ होने के लिए पिछले एक। एक बड़े वेक्टर के बीच में, गलत 0
एस का पता लगाना मुश्किल था, लेकिन 255
आसानी से खड़ा होता।
भविष्य में इन समस्याओं का आसानी से पता लगाने के तरीके पर कोई सुझाव? (आदर्श रूप से, मैं इसे सी की तरह काम करने के लिए अतिप्रवाह जांच को बंद करना चाहता हूं।) double
पर काम करना, निश्चित रूप से, लेकिन अगर मुझे नहीं पता कि यह uint8
है, तो इससे मदद नहीं मिलती है।
कहाँ से इन नंबरों मिलता है? यदि आप उन्हें फ़ाइल से लोड करते हैं, तो आप बस लोडर को एक लाइन जोड़ सकते हैं या तो यूंट 8, या डबल के रूप में सभी को वापस कर सकते हैं। फ़ाइलों को पढ़ने के अलावा आपको मैटलैब में uint8 की अपेक्षा नहीं करनी चाहिए। – Jonas
मैं वास्तव में वास्तव में नहीं जानता कि वे कहां से आ रहे हैं। मैं किसी और के कोड के साथ एकीकृत कर रहा हूं, इसलिए मुझे विवरण नहीं पता। –