Swedish flagChinese (Simplified) flagEnglish flagGerman flagFrench flagSpanish flagHindi flag
जुलाई
27
2010
2

उत्तल लिफाफा - एक इष्टतम बहुभुज कि यादृच्छिक जटिल मुद्दों encloses खोजें

परिचय

इस साल की गर्मियों मैं Västerås में एक प्रौद्योगिकी विभाग पर काम कर रहा हूँ. मैं एक ही कंपनी में और लगभग एक ही कार्यालय में तीन सीधे गर्मियों के लिए काम किया है. काम बहुत ही तकनीकी, मजेदार और चुनौतीपूर्ण है. कई एक कार्यालय में अन्य गर्मियों में नौकरी के विपरीत, मैं एक है जहाँ मैं जिम्मेदारी है और आम कार्यों के साथ काम मिल पाया. विशेष रूप से मैं के लिए उपकरण विकसित करने के लिए गणना ज्यादातर Matlab, जीयूआई प्रोग्रामिंग और जावा का उपयोग कर काम को आसान बनाने के साथ काम करते हैं. MatLab की नई शैली वस्तु उन्मुख कोड और अधिक कुछ साल पहले की तुलना में स्पष्ट बहुत बनाता है.

समस्या

दूसरे दिन मैं एक छोटे से चुनौती का सामना करना पड़ा. सरलीकृत यह एक बहुभुज कि जटिल बताते हैं कि विमान में बिखरे हुए हैं का एक सेट encloses को खोजने पर जोर दिया. सबसे पहले मैं समारोह है कि Matlab, जो निश्चित रूप से अजीब था में इस करता नहीं मिला. इसलिए मैं एक कस्टम एल्गोरिथ्म खोजने का फैसला किया. इस पोस्ट में मैं अपने एल्गोरिथ्म का वर्णन करेंगे.

Konvext hölje

चित्रा 1. उत्तल मामले के उदाहरण हैं.

मेरा Alogritm

मैं अपने चित्रा 2 का उपयोग एल्गोरिथ्म का वर्णन करेंगे. के साथ शुरू, मैं आवास खोजने में कठिनाई की व्याख्या करेगा. बात यह है कि सभी बिंदुओं एक संरचना में unsorted हैं. यदि अंकों के एक केंद्र बिंदु के आसपास आदेश दिए हैं, आप और केंद्र से दूरी के क्रम का उपयोग करने की समस्या को हल कर सकते हैं. यह लेता है कम से कम हे (एन लॉग (एन)) एक रेखीय छाँटे गए बनाने के लिए. मेरा एल्गोरिथ्म unsorted सूची में काम करता है और शायद भी अधिक समय होगा, मैं कोई सबूत नहीं व्युत्पन्न है.

विचार यह है कम से कम एक्स दिशा में मेरे बिंदु के साथ शुरू करने के लिए और फिर बात जिस पर कश्मीर मूल्य अधिकतम हो जाता है लगता है. यानी गणना:

(k_i) अधिकतम = (y_min - y_i) / (x_min - x_i) के लिए मैं = [सभी मुद्दों] यह आपको p_2 बिंदु देता है..

X_min अधिक y-मान छोटे से सभी अंक बाहर रखा जा सकता है. छोटे p_2 से एक्स मूल्य के साथ सभी अंक भी आगे पढ़ने के लिए बाहर हो सकता है पर शासन किया.

k_2 पाया, तो कहना है कि कम से कम खोजने के द्वारा:

k_1 - (y_1 - y_i) / (x_1 - x_i) के लिए मैं = [सभी आइटम गैर अपवर्जित]

उसी तरह k_a आम तौर पर पाया द्वारा:

न्यूनतम (k_a 1-- (y_a-1 - y_i) / (x_a-1 - x_i)) के लिए मैं = [सभी आइटम गैर अपवर्जित]

गणना बहुभुज के ऊपरी आधे के लिए किया जाता है जब तक आप बिंदु है, जो एक्स दिशा में अधिकतम है को मिलता है. उसके बाद, बहुभुज के नीचे आधे के लिए एक ही एल्गोरिथ्म.

Algoritm för konvext hölje

चित्रा 2. उत्तल मामले के लिए एल्गोरिथ्म.

निष्पादन

कलन विधि के प्रदर्शन को कितने अंक कि polygonet में अंत पर निर्भर करता है. मैं के रूप में कई linjärsök सूची के रूप में यह polygonet में अंक मिलता है. इसका मतलब यह है कि जटिलता हे (एन * खोज की संख्या) है. इष्टतम polygonet में अंकों की संख्या 10 और 25 के बीच अपने मौका अंक पर निर्भर करता है. एल्गोरिथ्म है इसलिए अपेक्षाकृत तेजी से.

कोड

कोड सार्वजनिक नहीं है.

Matlab के समाधान - उत्तल पतवार

मेरा एल्गोरिथ्म Matlab समारोह के रूप में एक ही बात करता convhull . उत्तल पतवार इस प्रकार एक संलग्न बहुभुज या एक मध्योन्नत शरीर के लिए अंग्रेजी शब्द है. एक और अच्छा स्रोत है http://en.wikipedia.org/wiki/Convex_hull_algorithms समझा है कि सैद्धांतिक न्यूनतम करने के लिए एक उत्तल खोल पाते समय क्रम O (n लॉग (एन)) है.

जुलाई
14
2009
2

Matlab छवि Resizer

मैं matlab के लिए एक छोटा सा प्रोग्राम लिखा है, छवियों सिकुड़. इसका कारण यह है कि मैं किसी भी साधारण कहीं रास्ते में है कि सुविधा नहीं मिला. यह / सिडनी ऑस्ट्रेलिया में आदान प्रदान वर्ष के दौरान चित्र है, जो अच्छी तरह से विश्राम किया जाना चाहिए के काफी होना चाहिए. हम अपने उपयोग पर सीमाएं हैं जहां हम रहते हैं ताकि आप प्रत्येक 5 एमबी की तस्वीरें नहीं हो सकता. के बाद मैं एक प्रारूप में कार्यक्रम के साथ समाप्त हो गया था यह अब, मैंने देखा है कि यह आसानी से हो जाता करने के लिए कई छवियों किसी Office प्रोग्राम के साथ एक बार में संपादित करें. वैसे भी, कार्यक्रम ठीक काम करता है.

उद्देश्य

कार्यक्रम के लिए बस एक फ़ोल्डर में सभी छवियों को कम करने के उद्देश्य से.

क्यों?

चूंकि यह मुश्किल है कि संपादित करें और प्रत्येक छवि हटना अलग जब कई तस्वीरें तय की जानी चाहिए.

क्या करने के लिए कार्यक्रम चलाने की आवश्यकता है?

यह आवश्यक है कि आप matlab क्रम के लिए एक लाइसेंस है. आप एक छात्र है कि मुझे कोई समस्या नहीं होगा रहे हैं, अन्यथा यह दुर्भाग्य है मुक्त शायद नहीं.

उपयोग

WYSIWYG.

जिम्मेदारी

मैं कुछ भी है कि काम करता है के लिए कोई जिम्मेदारी ले.


डाउनलोड ImageResizer

जून
28
2009
2

Guihandles साथ Matlab गुई

मैं एक कंप्यूटर प्रोग्राम के साथ Matlab में काम किया है. इसके पीछे विचार यह है कि यह उपयोगकर्ता के अनुकूल और कुशल के लिए सुविधाओं के कुछ प्रकार के लिए सामान्य गणना करना होना चाहिए. इस कार्यक्रम में मैं ग्राफिकल घटकों uipanel, uitree और uicontrol का एक बहुत इस्तेमाल किया है.

Matlab जीयूआई के लिए ट्यूटोरियल के कई लेखकों है Matlab के गाइड में निर्मित समारोह कहा जाता है (या शायद मैं इसे एक Toolbox ()? बुलाना चाहिए) का उपयोग करना चाहिये. प्रकार:

>> गाइड

कमांड विंडो में और यह एक विंडो जहाँ यह संभव है कि जगह और एक आंकड़ा के घटकों को कॉन्फ़िगर लाता है. यह सरल तेजी से अनुप्रयोगों के फायदे हैं. हालांकि, बड़ी समस्या अगर आप वैध सॉफ्टवेयर लिखना चाहता हूँ. यह इसलिए है क्योंकि यह मुश्किल है कि आपके ग्राफ़िक ऑब्जेक्ट्स का ट्रैक रखें. वे प्रत्यय अंजीर के साथ निर्यात आंकड़ा में शामिल हैं.

अपने घटक खुद प्लेस

मैं गाइड का उपयोग किए बिना अपने प्रोग्राम में लिखा है. यह बनाने और घटकों को तैनात करना आसान है. जैसा कि आप नीचे देख सकते हैं, एक छोटे से आदेश कोडिंग की एक बहुत आवश्यकता है. कल्पना कीजिए मांसल कैसे की तरह खेल के लिए कोड पोकर और अन्य अनुप्रयोगों जहां वहां की गतिविधियों की एक विविधता है. वैसे भी, वापस गाइड का उपयोग कर के बिना कार्यक्रमों के लेखन के लिए. इस विंडो को बनाया जा आकार और खिड़की की स्थिति के लिए hantag निर्दिष्ट द्वारा किया जाता है. बेशक, रंग या गाइड के अंदर की तरह बस कॉन्फ़िगर, कॉलबैक जैसे अन्य मानकों. मैं Matlab वस्तुओं की तरह अपने कार्यक्रमों लिखा है और एक आउटसोर्सिंग आपरेशन बुला द्वारा निर्माता के घटकों आउटसोर्स रणनीति का प्रयोग किया, अंतरिम रूप init gui नाम दिया है. मैं एक संरचना है कि संभाल सभी घटकों की पकड़ है, में कक्षा में आंतरिक रूप से अपने उद्देश्य को बचाने के लिए. यह संरचना मुझे शुरू की है जब मैं बाहर घटकों रखना.

  classdef aClassName <HandleEasy
    गुण
       handleToGui;
    अंत
    तरीकों
       समारोह obj aClassName = (varargin)
          ...
          (obj.initGui);
          ...
       अंत
       ...
       समारोह अंजीर = initGui (obj)
          Obj.handleToGui.fig = आंकड़ा (...);
          Obj.handleToGui.otherComponentName = ...
          ...
       अंत
    अंत
 अंत% classdef 

Matlab समारोह guihandles

Matlab एक guihandles समारोह बुलाया गया है. यह कई मायनों में काफी सुविधाजनक है और मैं समझाता हूँ क्यों. कारण यह है कि आप अपने घटक सीधे एक संरचना में जब तुम उन्हें बाहर रखा क्योंकि guihandles (आंत्रेतर), सब (बच्चों) बच्चा जो आंकड़ा में हैं संभालती है की एक संरचना देता है जोड़ने के बारे में चिंता नहीं है. इस पर फोन करके, आप handleToGui आरंभ होने के बाद सभी घटकों बाहर रखी कर सकते हैं. यह तो क्षेत्र के साथ एक संरचना बन जाता है टैग (टैग) का नाम दिया गया है घटकों दिया एम्स.

Matlab समारोह guihandles के साथ कोई समस्या

हालांकि, वहाँ यह है कि मुझे लगता है कि Matlab के बारे में सोचा नहीं है के साथ एक खतरा है. वैकल्पिक रूप से, यह इतना है कि मैं और अन्य सभी का इस्तेमाल किया है भी लापरवाही. तथ्य यह है कि GUI के हैंडल आकृति में सभी विगेट्स के लिए एक संभाल प्रदान करते हैं. यदि आप अपने अनुप्रयोग के विभिन्न भागों के लिए अलग अलग वर्गों, जैसे है एक अलग वर्ग है कि कार्यक्रम और एक अन्य वर्ग है कि एक अन्य जगह वे एक दूसरे को नष्ट अगर दोनों guihandles उपयोग कर सकते हैं में एक समान कार्य करता है के एक भाग में plottyta की एक निश्चित प्रकार संभालती है. Subcomponents में Guihandles मुख्य चरित्र (अन्य subcomponents कि यह कर रहे हैं सहित) को संभालती अनुमति देता है. यदि अन्य subcomponents किसी भी घटक की एक ही टैग का नाम है, वे जब घटक invokes यह मानना ​​है कि क्या उसके घटक है उलझन में हो जाएगा.

Matlab समारोह guihandles का उपयोग न करें

वस्तु उन्मुख प्रोग्रामिंग मुझे अच्छी संरचना बनाने के लिए एक प्रोग्रामिंग तरीका है. इस अनुमति से प्रत्येक वस्तु (वर्ग) को अपनी नौकरी आंतरिक रूप से करते हैं और केवल पर्यावरण के साथ विशिष्ट इंटरफेस के माध्यम से संवाद. वैश्विक चर guihandles देता है बहुत खतरनाक है. दुनिया की अवधारणा को दूसरे शब्दों में कम युग्मन, उच्च सामंजस्य और अच्छी तरह से परिभाषित मॉड्यूल के लिए, चाहता है.

द्वारा लिखित दाऊद Gustafsson, : में प्रोग्रामिंग : | टैग , , ,
जून
19
2009
2

Matlab प्रोग्रामिंग

मैं एक Matlab कार्यक्रम के साथ अपने गर्मियों में नौकरी के दौरान काम किया है. Matlab की ताकत है कि यह एक बहुत ही सरल भाषा है जो कहते हैं, की तुलना में जावा एक मतिहीनता के एक उच्च स्तर है. इसके लिए जोड़ा जा सकता है कि भाषा बहुत सरल है जब यह प्रदर्शन गणना के लिए आता है, अंतर समीकरणों, संख्यात्मक गणना, सिमुलेशन और इतने पर हल करने चाहिए. एक नुकसान, अमूर्त के उच्च स्तर से उत्पन्न है, तथापि, कि यह बहुत धीमी गति से चला जाता है. तुम ध्यान से जब आप एन्कोड की सोचना है.

Matlab जावा के संस्करण 2008a से बनाया है. यह संभव है कि Matlab समारोह (वहाँ भी एक ही शैली में अन्य कार्यों) द्वारा जावा में सुविधाओं का सबसे चलाएँ:

  javaMethodEDT ('वर्ग या वर्ग की वस्तु', 'methodName', ..., params) 

है Matlab के 2008 संस्करण से, तुम भी वर्गों और वस्तुओं, जो सरल और बहुत संरचना बनाता है बना सकते हैं. वाक्यविन्यास सुंदर जावा से दूर है और बहुत पिछले Matlab के संस्करण है, जो पहली बार में यह थोड़ा अजीब बनाता से विरासत में मिली है. मैं लेख की एक श्रृंखला में कुछ Matlab प्रोग्रामिंग के लिए युक्तियाँ और चालें पेश किया जाएगा.

  • मैं जीयूआई के माध्यम से पेड़ और नियंत्रण सहित के रूप में जाना जाएगा. ये Matlab के कार्यों uicontrol और uitree, जो जावा घटकों, JTree और JButton, JTextField, आदि के एक फिर से लिखना है द्वारा नियंत्रित किया जाता है. इस संदर्भ में, मैं घटकों के आउटसोर्सिंग, जो मैन्युअल रूप से निर्मित है Matlab सॉफ्टवेयर गाइड के साथ किया जा सकता है रखना.
  • मैं Matlab पाने के लिए और निर्धारित तरीकों की वापसी है, जो एक थोड़ा जटिल है लेकिन बहुत अच्छा है जब वस्तुओं के साथ काम करेंगे.
  • मैं Matlab कार्यों के माध्यम से जाने के लिए वस्तुओं की दुकान और समझा क्यों यह करने के लिए डेटा संरचना के रूप में डेटा को बचाने के लिए समझदार है.
  • अंत में, मैं भी तथाकथित callbacks और ode45 समारोह है, जो अंतर समीकरणों को हल करने में उपयोगी होता है उठाना चाहते हैं. Ode45 अन्य बातों के साथ कर सकते हैं के विभिन्न प्रकार के गतिशील प्रणालियों अनुकरण इस्तेमाल किया जाएगा. एक उदाहरण के अलग अलग परिस्थितियों में ग्रिड व्यवहार है.

मैं खुद अब देखना दो परियोजनाओं से अनुभव के साथ एक अच्छा Matlab प्रोग्रामर के रूप में. मुझे और मेरे मिशन के बारे में अधिक जानकारी के लिए, कृपया संपर्क करें david@techonomics.se . मैं च कर और या घंटे के हिसाब से आबंटन प्रभार प्रति बिल है.

विषय से संशोधित किया गया है एयरो 2.0 - Blogglista.se - अनुवाद करके बनाया है N2H