Name Date Val1 val2
--- ------- ---- ----
BA 2013-09-07 123.123 1232.22
BA 2013-09-08 435.65756 2314.34
BA 2013-09-09 234.2342 21342.342
yazdım ve çalışma hangi kod edilir:
iki başlık satırları metin dosyası yerde yeniden ortaya çıkabilir bu anormallik ile aşağıdaki örnek yapıya sahip bir metin dosyasıdata.txt
düşünün :
%# Read in file using textscan, read all values as string
inFile = fopen('data.txt','r');
DATA = textscan(inFile, '%s %s %s %s');
fclose(inFile);
%# Remove the header lines everywhere in DATA:
%# Search indices of the first entry in first cell, i.e. 'Name', and remove
%# all lines corresponding to those indices
[iHeader,~] = find(strcmp(DATA{1},DATA{1}(1)));
for i=1:length(DATA)
DATA{i}(iHeader)=[];
end
%# Repeat again, the first entry corresponds now to '---'
[iHeader,~] = find(strcmp(DATA{1},DATA{1}(1)));
for i=1:length(DATA)
DATA{i}(iHeader)=[];
end
%# Now convert the cells for column Val1 and Val2 in data.txt to doubles
%# since they have been read in as strings:
for i=3:4
[A] = cellfun(@str2double,DATA{i});
DATA{i} = A;
end
Ben oder içinde bir dize DATA
her yerde başlık satırları kaldırmak kaldırmak için muktedir olarak her şeyi okumayı seçti.
duruş zamanı kod yavaş parçası str2double
rağmen [A] = cellfun(@str2double,DATA{i})
zaten str2num
kıyasla daha hızlı bir seçimdir dönüşüm olduğunu söylüyor. İkinci en yavaş kısım textscan
'dur.
soru bu sorunla başa çıkmak için daha hızlı bir yol var, şimdi?
ben daha ilişiğinizi gerektiğini varsa bana bildirin. Görmediğim çok belirgin bir çözüm varsa beni affet, şimdi üç haftalığına Matlab ile çalışıyorum. Bunu önlemek için veri toplama düzeltmek için mümkünse daha iyi olurdu uzun vadede rağmen
Bu benim veriler için iyi çalıştı. çift dönüşüm dizesinin kullanımını önleme roughtly% 60 oranında zaman azalır! – Lukas