2010-03-24 4 views
5

जैसा कि आप जानते हैं, कई मौकों पर, मैट्रिक्स के कुछ तत्वों को ध्वजांकित करने की आवश्यकता होती है। उदाहरण के लिए जब हमने आसन्न मैट्रिक्स को भारित किया है, और हमारा ग्राफ पूरी तरह से कनेक्ट नहीं है, तो हमें यह दिखाने के लिए कुछ तत्वों को ध्वजांकित करना होगा कि उन नोड्स के बीच कोई किनारा नहीं है। सवाल यह है कि ऐसा कैसे करें? क्या मैट्रिक्स में उन तत्वों पर NaN या Inf को रखना बेहतर है? या कुछ और (जैसे -1)?MATLAB में कुछ तत्वों को ध्वजांकित करने का सबसे अच्छा तरीका क्या है? NaN या Inf का उपयोग कर? या कुछ और?

उत्तर

10

यह पूरी तरह से इस मामले पर निर्भर करता है। उदाहरण में आपने शून्य का उपयोग करने के लिए एक अच्छा समाधान दिया जा सकता है, क्योंकि किनारों को भारित किया जाता है, और कई उद्देश्यों के लिए 0 वजन बढ़त किनारे के बराबर होती है। यह सच है यदि आप फ्लो/कट एल्गोरिदम जैसी चीजें कर रहे हैं।

आम तौर पर जब NaN और Inf के बीच चयन करते हैं, तो मैं NaN के साथ जाऊंगा।

Inf*(-1) = -Inf 
Inf+(-Inf) = NaN 
Inf > 10 = True 
etc... 

एक साफ समाधान अन्यथा बूलियन्स का एक और मैट्रिक्स, यह सच है है कि जहां कनेक्शन वैध है, और झूठी धारण करने के लिए हो सकता है: Inf कुछ गुण आप एक "अमान्य" मार्कर के रूप में पसंद नहीं हो सकता है। यह थोड़ा स्मृति बर्बाद करता है, लेकिन जब तक कि आपका मैट्रिक्स बड़ा न हो, मुझे लगता है कि कोड पठनीयता यह आपको देगी।

+3

नाएन में कुछ आश्चर्य भी हैं: NaN == NaN झूठी वापसी करता है! तो isequal() का उपयोग करने के बजाय फ़ंक्शन isequalwithnans() का उपयोग किया जाना चाहिए। – Mikhail

+4

यह isequalwithequalnans() – Jonas

+2

यह सही समझ में आता है कि NaN == NaN गलत है। उदाहरण के लिए देखें: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql- सर्वर। –

संबंधित मुद्दे

 संबंधित मुद्दे