ฉันกำลังเขียนสคริปต์ Matlab ซึ่งเริ่มต้นด้วยการอ่านไฟล์ .log ที่คั่นด้วยช่องว่างลงในอาร์เรย์ของเซลล์ ส่วนหัวของคอลัมน์ในไฟล์เป็นสตริงทั้งหมด แต่มีประเภทข้อมูลทั่วทั้งไฟล์ผสมกัน ดังนั้นเพื่อความง่าย ฉันจึงถือว่าทุกค่าเป็นสตริงในตอนนี้
นี่คือสิ่งที่ฉันมีจนถึงตอนนี้ และใช้งานได้ดีกับไฟล์ขนาดเล็ก
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);
อย่างไรก็ตาม ไฟล์จริงที่สคริปต์นี้จะต้องอ่านนั้นเทอะทะมาก (30,000+ แถว, 200+ คอลัมน์) และฉันพบว่าขั้นตอนนี้ช้ามากสำหรับสิ่งนั้น ฉันค้นคว้ามาแล้วและมั่นใจว่าการใช้เวกเตอร์เป็นคำตอบ แต่ฉันไม่คุ้นเคยมากนักในด้านนี้
ฉันสามารถปรับเปลี่ยนขั้นตอนนี้เพื่อเพิ่มความเร็วได้อย่างมากด้วยวิธีใดบ้าง
แก้ไข: ประเภทคอลัมน์ไม่สอดคล้องกัน ดังนั้นฟังก์ชัน importdata
จึงใช้งานไม่ได้ ไฟล์นี้มีนามสกุล .log ดังนั้นฟังก์ชัน readtable
จึงใช้งานไม่ได้ ตามหลักการแล้ววิธีการใช้การสแกนข้อความที่เร็วขึ้นจะสมบูรณ์แบบ
fscanf
ได้ นอกจากนี้ คุณสามารถใช้เมธอด textscan ได้ โดยที่คุณระบุ ตัวคั่น เป็นการยากที่จะให้คำแนะนำโดยไม่ทราบรูปแบบข้อมูล - person patrik   schedule 29.06.2015ImportData
เป็นตัวแปร รหัสที่ให้มาดูเหมือนจะเป็นรหัส c ข้อเสนอแนะคือควรใช้ไลบรารี่ที่กว้างขวางของ Matlab - person patrik   schedule 30.06.2015