MATLAB Language
बड़ी फाइलें पढ़ना
खोज…
textscan
मान लें कि आपने एक बड़ी टेक्स्ट फ़ाइल या स्ट्रिंग में डेटा फॉर्मेट किया है, जैसे
Data,2015-09-16,15:41:52;781,780.000000,0.0034,2.2345
Data,2015-09-16,15:41:52;791,790.000000,0.1255,96.5948
Data,2015-09-16,15:41:52;801,800.000000,1.5123,0.0043
एक यह काफी तेजी से पढ़ने के लिए textscan
का उपयोग कर सकते हैं। ऐसा करने के लिए, fopen
साथ पाठ फ़ाइल की फ़ाइल पहचानकर्ता प्राप्त करें:
fid = fopen('path/to/myfile');
इस उदाहरण में डेटा के लिए मान लें, हम पहले कॉलम "डेटा" को अनदेखा करना चाहते हैं, तार के रूप में दिनांक और समय पढ़ें, और शेष कॉलमों को डबल्स के रूप में पढ़ें, अर्थात
Data , 2015-09-16 , 15:41:52;801 , 800.000000 , 1.5123 , 0.0043
ignore string string double double double
ऐसा करने के लिए, कॉल करें:
data = textscan(fid,'%*s %s %s %f %f %f','Delimiter',',');
%*s
में तारांकन का अर्थ है "इस कॉलम को अनदेखा करें"। %s
अर्थ है "एक स्ट्रिंग के रूप में व्याख्या"। %f
अर्थ है "युगल के रूप में व्याख्या करना (तैरना)"। अंत में, 'Delimiter',','
कहा गया है कि सभी कॉमा को प्रत्येक स्तंभ के बीच सीमांकक के रूप में व्याख्या की जानी चाहिए।
सारांश में:
fid = fopen('path/to/myfile');
data = textscan(fid,'%*s %s %s %f %f %f','Delimiter',',');
data
अब एक सेल में प्रत्येक कॉलम के साथ एक सेल एरे होता है।
तिथि और समय तेजी से संख्यात्मक सरणी के लिए
संख्यात्मक सरणियों के लिए दिनांक और समय के तार को datenum
साथ किया जा सकता है, हालांकि किसी बड़ी डेटा फ़ाइल को पढ़ने में आधे से अधिक समय लग सकता है।
उदाहरण के लिए टेक्ससकैन में डेटा पर विचार करें। द्वारा, फिर से, textcancan और पूर्णांक के रूप में दिनांक और समय की व्याख्या करते हुए, वे तेजी से एक संख्यात्मक सरणी में परिवर्तित हो सकते हैं।
उदाहरण डेटा में एक पंक्ति को इस प्रकार समझा जाएगा:
Data , 2015 - 09 - 16 , 15 : 41 : 52 ; 801 , 800.000000 , 1.5123 , 0.0043
ignore double double double double double double double double double double
जो इस प्रकार पढ़ा जाएगा:
fid = fopen('path/to/myfile');
data = textscan(fid,'%*s %f %f %f %f %f %f %f %f %f %f','Delimiter',',-:;');
fclose(fid);
अभी:
y = data{1}; % year
m = data{2}; % month
d = data{3}; % day
H = data{4}; % hours
M = data{5}; % minutes
S = data{6}; % seconds
F = data{7}; % milliseconds
% Translation from month to days
ms = [0,31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
n = length(y); % Number of elements
Time = zeros(n,1); % Declare numeric time array
% Algorithm for calculating numeric time array
for k = 1:n
Time(k) = y(k)*365 + ms(m(k)) + d(k) + floor(y(k)/4)...
- floor(y(k)/100) + floor(y(k)/400) + (mod(y(k),4)~=0)...
- (mod(y(k),100)~=0) + (mod(y(k),400)~=0)...
+ (H(k)*3600 + M(k)*60 + S(k) + F(k)/1000)/86400 + 1;
end
566,678 तत्वों पर डेटेनम का उपयोग करना datenum
सेकंड की आवश्यकता है, जबकि आवश्यक विधि 0.048334 सेकंड से ऊपर है, यानी datenum
या ~ 137 गुना तेजी से समय का 0.73%।