मेरे पास एक सरणी है जिसमें 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' हैं जो गलत है। मैं क्या गलत कर रहा हूं? क्या मुझे सेल सरणी को शामिल करने की आवश्यकता है?
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'
तो लूप में आपको प्रत्येक तिथि के लिए पंक्ति अनुक्रमणिका और वर्ष, माह और दिनों को निकालने के लिए स्तंभ अनुक्रमणिका को संदर्भित करने की आवश्यकता है।
संबंधित सवाल
नए सवाल
arrays
एक सरणी एक आदेशित रैखिक डेटा संरचना है जिसमें तत्वों (मूल्यों, चर, या संदर्भों) का एक संग्रह होता है, प्रत्येक को एक या अधिक अनुक्रमित द्वारा पहचाना जाता है। जब सरणियों के विशिष्ट प्रकारों के बारे में पूछा जाता है, तो इसके बजाय इन संबंधित टैगों का उपयोग करें: [वेक्टर], [सरणी सूची], [मैट्रिक्स]। इस टैग का उपयोग करते समय, एक सवाल जो प्रोग्रामिंग भाषा के लिए विशिष्ट होता है, उस प्रश्न को उस प्रोग्रामिंग भाषा के साथ टैग करें जिसका उपयोग किया जा रहा है।