Import a .txt file with numbers and words

4 次查看(过去 30 天)
I need to import a .txt file that with numbers and words. In particular I need the first two numbers next to every "POINT" and the first number after "PATH", how can I do this?
I tried to import the .txt file using "Import Data" but this operation is too slow.
Thank you.
  3 个评论
KL
KL 2017-12-14
Attach a dummy data file using the paperclip icon. That makes helping you easier.
Stephen23
Stephen23 2017-12-14
@Dario Anghileri: we cannot load a screenshot, or import it in any useful way. Even if someone patiently copied all of that data then it is unlikely that they would get the correct whitespace characters.
If you want help then please upload a real data file by clicking the paperclip button.

请先登录,再进行评论。

采纳的回答

YT
YT 2017-12-14
编辑:YT 2017-12-14
Here is my updated answer using delay.txt
clear all;
fid = fopen('delay.txt','r');
data = textscan(fid, '%s', 'Delimiter', '\n'); %read all data as string
data = data{1};
for i = 1:size(data,1)
nData{i,:} = strsplit(data{i},' '); %split data whitespace
if (mod(i,2)==1) %checks if uneven/POINT or even/PATH
nnData{i,1} = str2num(cell2mat(nData{i}(2))); %get POINT 1st number
nnData{i,2} = str2num(cell2mat(nData{i}(3))); %get POINT 2nd number
else
nnData{i,3} = str2num(cell2mat(nData{i}(2))); %get PATH 1st number
end
end
nnData = cell2mat(nnData); %make double matrix / removes empty rows
fclose(fid);
  4 个评论
YT
YT 2017-12-15
Okay so I tried it again, now without looping and with the code you provided in your comment
tic
fid = fopen('delay_ant.txt', 'r');
C = textscan(fid, '%s%f%f%f');
fclose(fid);
C2 = C{2}; C2(isnan(C2)) = []; %removing NaN
C2p2 = C2(2:2:end); %saving even rows
C2(2:2:end) = []; %remove even row
C3 = C{3}; C3(isnan(C3)) = []; %removing NaN
C3(2:2:end) = []; %remove even row
finalMatrix = [C2(:,1) C3 C2p2]; %[point1, point2, path1]
toc %clocked 0.22s

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by