2017-02-08 9 views

उत्तर

6

documentation suggests:

वहाँ MATLAB® में पाठ का प्रतिनिधित्व करने के दो तरीके हैं। आप चरित्र सरणी में पाठ स्टोर कर सकते हैं। एक सामान्य उपयोग चरित्र के वैक्टर के रूप में पाठ के छोटे टुकड़े को स्टोर करना है। और रिलीज 2016 बी में शुरू, आप स्ट्रिंग सरणी में टेक्स्ट के कई टुकड़े भी स्टोर कर सकते हैं। स्ट्रिंग एरे डेटा के रूप में पाठ के साथ काम करने के लिए कार्यों का एक सेट प्रदान करते हैं।

  • तत्व पहुंच:

यह कैसे दो अभ्यावेदन अलग है। विभिन्न लंबाई के char वैक्टर का प्रतिनिधित्व करने के लिए, किसी को cell सरणी का उपयोग करना था, उदा। ch = {'a', 'ab', 'abc'}। तारों के साथ, वे वास्तविक सरणी में बनाए जा सकते हैं: str = [string('a'), string('ab'), string('abc')]। हालांकि, एक स्ट्रिंग सरणी सीधे में index characters को, धनुषाकार कोष्ठक अंकन इस्तेमाल किया जाएगा:

str{3}(2) % == 'b' 
  • मेमोरी का उपयोग करें। पात्रों के रूप में वर्ण कई बाइट्स का उपयोग करते हैं। string रों भूमि के ऊपर है: अंतर को समझने के लिए शुरू करने के लिए

    a = 'abc' 
    b = string('abc') 
    whos a b 
    

    रिटर्न

    Name  Size   Bytes Class  Attributes 
    
    a   1x3     6 char     
    b   1x1    132 string 
    
  • 3

    सबसे अच्छी जगह the documentation है। मुख्य अंतर यह है, वहाँ के रूप में कहा गया है:

    • एक चरित्र सरणी, वर्णों का एक क्रम है बस के रूप में एक संख्यात्मक सरणी संख्या का एक अनुक्रम है। एक सामान्य उपयोग टेक्स्ट के छोटे टुकड़े को चरित्र वैक्टर के रूप में स्टोर करना है, जैसे कि c = 'Hello World';
    • एक स्ट्रिंग सरणी पाठ के टुकड़ों के लिए एक कंटेनर है। स्ट्रिंग एरे डेटा के रूप में पाठ के साथ काम करने के लिए कार्यों का एक सेट प्रदान करते हैं। पाठ को स्ट्रिंग सरणी में कनवर्ट करने के लिए, string फ़ंक्शन का उपयोग करें।

    यहाँ अपने मतभेदों के बारे में कुछ महत्वपूर्ण बिंदु हैं:

    • वे विभिन्न वर्गों (अर्थात प्रकार) कर रहे हैं: char बनाम string। इस तरह उनके पास प्रत्येक के लिए परिभाषित तरीकों के विभिन्न सेट होंगे। इस बारे में सोचें कि आप अपने पाठ पर किस तरह के संचालन करना चाहते हैं, फिर सबसे अच्छा समर्थन करने वाले व्यक्ति को चुनें।
    • चूंकि string एक कंटेनर वर्ग है, इस बात से सावधान रहें कि इसका आकार समकक्ष वर्ण सरणी प्रतिनिधित्व से अलग कैसे है।

      >> a = 'AX'; % This is a character. 
      >> b = string(a) % This is a string. 
      >> whos 
          Name  Size   Bytes Class  Attributes 
      
          a   1x2     4 char     
          b   1x1    134 string 
      

      सूचना string कंटेनर 1x1 के रूप में इसके आकार को सूचीबद्ध करता है (और स्मृति में अधिक बाइट्स तक ले जाता है) के रूप में इसके नाम का तात्पर्य, जबकि चरित्र सरणी है, कि, वर्णों की एक 1x2 सरणी: अपने उदाहरण का उपयोग करना।

    • इन्हें हमेशा एक दूसरे के लिए उपयोग नहीं किया जा सकता है, और आपको कुछ संचालन के लिए दोनों के बीच परिवर्तित करने की आवश्यकता हो सकती है। उदाहरण के लिए, string वस्तुओं dynamic field names for structure indexing के रूप में इस्तेमाल नहीं किया जा सकता:

      >> s = struct('a', 1); 
      >> name = string('a'); 
      >> s.(name) 
      Argument to dynamic structure reference must evaluate to a valid field name. 
      
      >> s.(char(name)) 
      
      ans = 
      
          1 
      
    1

    स्ट्रिंग्स भूमि के ऊपर का एक सा है, लेकिन अभी भी चरित्र प्रति 2 बाइट्स से वृद्धि हुई है। प्रत्येक 8 वर्णों के बाद यह चर के आकार को बढ़ाता है। लाल रेखा y=2x+127 है।

    v=[];N=100; 
    for ct = 1:N 
        s=char(randi([0 255],[1,ct])); 
        s=string(s); 
        a=whos('s');v(ct)=a.bytes; 
    end 
    figure(1);clf 
    plot(v) 
    xlabel('# characters') 
    ylabel('# bytes') 
    p=polyfit(1:N,v,1); 
    hold on 
    plot([0,N],[127,2*N+127],'r') 
    hold off 
    
    :

    string class

    आंकड़ा का उपयोग कर बनाई गई है

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