Saya sedang menulis skrip Matlab yang dimulai dengan membaca file .log yang dibatasi spasi ke dalam array sel. Header kolom dalam file semuanya berupa string, tetapi tipe data di seluruh file tercampur, jadi untuk kesederhanaan saya telah memperlakukan setiap nilai sebagai string untuk saat ini.
Inilah yang saya miliki sejauh ini, dan berfungsi dengan baik dengan file kecil.
fileID = fopen('file');
ImportData = char.empty; % create empty array to add on to
while ~feof(fileID)
tLines = fgetl(fileID); % reads line into string
raw = strsplit(tLines, ' '); %splits line into array for that line
ImportData = cat(1, ImportData, raw); %adds line to rest of array
end
fclose(fileID);
Namun file sebenarnya yang perlu dibaca skrip ini sangat berat (30.000+ baris, 200+ kolom) dan menurut saya prosedur ini sangat lambat untuk itu. Saya telah melakukan beberapa penelitian dan saya yakin bahwa vektorisasi adalah jawabannya, tetapi saya sangat asing dengan bidang ini.
Apa saja cara saya dapat mengubah prosedur ini untuk meningkatkan kecepatan secara dramatis?
EDIT: Tipe kolom tidak konsisten, sehingga fungsi importdata
tidak berfungsi. File tersebut memiliki ekstensi .log, sehingga fungsi readtable
tidak berfungsi. Idealnya, metode yang lebih cepat dalam menggunakan pemindaian teks akan menjadi sempurna.
fscanf
. Selanjutnya, dimungkinkan untuk menggunakan metode textscan, yang Anda tentukan pembatas. Sulit memberikan saran tanpa mengetahui format datanya - person patrik   schedule 29.06.2015ImportData
adalah variabel. Kode yang diberikan sepertinya seperti kode-c. Sarannya adalah lebih baik menggunakan perpustakaan Matlab yang luas. - person patrik   schedule 30.06.2015