design patterns - Using PatternSequence with Cases in Mathematica to find peaks -
निर्देशांक के जोड़ जोड़े
डेटा = {{1, 0}, {2, 0}, {3, 1}, {4, 2}, {5, 1}, {6, 2}, {7, 3}, {8, 4}, {9, 3}, {10, 2} } मैं चोटियों और घाटियों को निकालना चाहता हूं, इस प्रकार:
{{4, 2}, {5, 1}, {8, 4}} मेरा वर्तमान समाधान यह अनावश्यकता है:
मामले [विभाजन [डेटा, 3, 1], {{ta_, a_}, { Tb_, b_}, {टीसी_, सी_}} /; या [एक & lt; बी & gt; सी, ए & gt; बी एंड एलटी; सी]: & gt; {टीबी, बी}] जो आप देख सकते हैं विभाजन का उपयोग कर डेटा सेट के आकार को तीन गुणा करके शुरू होता है। मुझे लगता है कि यह जानकारी निकालने के लिए मामले और patternequence का उपयोग करना संभव है, लेकिन यह प्रयास काम नहीं करता है: मामले [डेटा, ({___, पैंट स्यूवेन्स [{_, a_}, {t_, b_}, {_, c_}], ___} / या [एक और लि <बी & gt; सी, ए & gt; बी & lt; c]): & gt ; {टी, बी}] code> यह पैदावार {} । मुझे लगता है कि पैटर्न के साथ कुछ भी गलत नहीं है क्योंकि यह काम करता है प्रतिस्थापन सभी के साथ: डेटा / ({___, पैंट स्यूवेन्स [{_, a_}, {t_, b_}, {_, c_}], ___} / या [एक और लि <बी & gt; सी, ए & gt; बी & lt; c]): & gt ; {टी, बी} code> यह सही पहला शिखर देता है, {4, 2} । यहां पर क्या हो रहा है?
आपका असफल प्रयास क्यों नहीं करता है इसका एक कारण यह है कि मामले डिफ़ॉल्ट रूप से आपके अभिव्यक्ति के स्तर 1 पर मिलानों के लिए दिखता है चूंकि आप स्तर 0 पर मिलान चाहते हैं, इसलिए आपको मामलों [डेटा, {___, {_, a_}, {t_, b_}, {_, c_} जैसे कुछ करने की आवश्यकता होगी, ___} /; या [एक & lt; बी & gt; सी, ए & gt; बी एंड एलटी; सी]: & gt; {टी, बी}, {0}] हालांकि, यह केवल एक समाधान के रूप में {4,2} देता है, इसलिए यह अभी भी नहीं है जो आप देख रहे हैं के लिये। विभाजन के बिना सभी मैचों को खोजने के लिए आप ऐसा कुछ कर सकते हैं बदलें [डेटा, ({___, {_, a_}, {t_, b_}, {_, c_}, ___} / ; या [a & lt; b & gt; c, a & gt; बी & lt; c]): & gt; {टी, बी}] जो देता है
{{4, 2}, {5, 1}, {8, 4}}
Comments
Post a Comment