मेरे पास एक सरणी है जिसमें yyyymmdd प्रारूप में एकाधिक तिथियां हैं, जो 50x1 डबल के रूप में संग्रहीत हैं। मैं साल, महीना और दिन निकालने की कोशिश कर रहा हूं ताकि मैं प्रत्येक तारीख को एक सीरियल नंबर असाइन करने के लिए डेटनम का उपयोग कर सकूं।

एक व्यक्तिगत तिथि को अनुक्रमणित करना, str2num का उपयोग करके परिवर्तित करना, फिर उचित मानों को अनुक्रमणित करना और खींचना ठीक काम करता है, लेकिन जब मैं तिथियों की सूची के माध्यम से लूप करने का प्रयास करता हूं तो यह काम नहीं करता- केवल संख्या 2 की विविधताएं वापस आती हैं।

dates = [20180910; 20180920; 20181012; 20181027; 20181103; 20181130; 20181225];

% version1
datesnums=num2str(dates); % dates is a list of dates stored as 
integers

for i=1:length(datesnums)
    pullyy=str2num(datesnums(1:4));
    pullmm=str2num(datesnums(5:6));
    pulldd=str2num(datesnums(7:8));
end

साथ ही साथ

%version2
datesnums=num2str(dates,'%d')

for i = 1:length(datesnums)
    dd=datenum(str2num(datesnums(i(1:4))),str2num(datesnums(i(5:6))), 
    str2num(datesnums(i(7:8))));
end

मैं एक नई सरणी उत्पन्न करने की कोशिश कर रहा हूं जो सिर्फ इनपुट तिथियों की क्रम संख्या है। दिखाए गए उदाहरणों में, मुझे केवल एकल पूर्णांक मान मिल रहे हैं, जो मुझे पता है क्योंकि लूप गलत है और मुझे त्रुटियां मिलती हैं जो कहती हैं कि "सूचकांक सरणी तत्वों की संख्या से अधिक है (1)।" संस्करण 1 के लिए। जब ​​मैंने इसे सब कुछ के माध्यम से सफलतापूर्वक लूप करने के लिए प्राप्त किया है, तो आउटपुट हर एक तारीख के लिए सिर्फ '2222','22,'22' हैं जो गलत है। मैं क्या गलत कर रहा हूं? क्या मुझे सेल सरणी को शामिल करने की आवश्यकता है?

0
user250829 18 जून 2019, 15:45

1 उत्तर

सबसे बढ़िया उत्तर

सभी वर्षों, महीनों और दिनों को एक लूप में लाने के लिए:

datesnums=num2str(dates);

for i=1:size(datesnums, 1)
    pullyy(i) = str2num(datesnums(i,1:4));
    pullmm(i) = str2num(datesnums(i,5:6));
    pulldd(i) = str2num(datesnums(i,7:8));
end

असल में, आप इसे लूप के बिना कर सकते हैं:

pullyy = str2num(datesnums(:,1:4));
pullmm = str2num(datesnums(:,5:6));
pulldd = str2num(datesnums(:,7:8));

स्पष्टीकरण:

यदि उदाहरण के लिए dates वेक्टर एक [6x1] सरणी है:

dates =[...
    20190901
    20170124
    20191215
    20130609
    20141104
    20190328];

datesnums=num2str(dates); आकार का एक चार मैट्रिक्स बनाता है [6x8] जहां प्रत्येक पंक्ति dates में एक तत्व से मेल खाती है:

datesnums =

  6×8 char array

    '20190901'
    '20170124'
    '20191215'
    '20160609'
    '20191104'
    '20190328'

तो लूप में आपको प्रत्येक तिथि के लिए पंक्ति अनुक्रमणिका और वर्ष, माह और दिनों को निकालने के लिए स्तंभ अनुक्रमणिका को संदर्भित करने की आवश्यकता है।

1
Eliahu Aaron 18 जून 2019, 16:23