Reading a massive file but skipping several lines / rows at a fixed interval
4 次查看(过去 30 天)
显示 更早的评论
What is the most efficient way to read / analyze rows 1-1990 of an array, then skip 9 lines, then read rows 2000-3990, skip 9 rows, read rows 4000-5990, and so on to the end of the array? Is there a way to vectorize that?
5 个评论
Stephen23
2022-3-29
编辑:Stephen23
2022-3-29
Use a loop. Inside the loop you can easily tell MATLAB which part of the file to read, e.g.:
- TEXTSCAN lets you specify how many times the format is applied and how many header lines.
- READTABLE et al let you specify the data location, header location, etc.
What is so special about the rows you wan to ignore: are they intermediate headers or just data you don't want? The answer to that question will change how you can approach this task.
采纳的回答
KSSV
2022-3-29
编辑:KSSV
2022-3-29
id = 1:9 ; % line numbers
V = 1990:2000:9990 ; % give the end wisely
idx = id'+V ; % make indices
idx = idx(:) ; % make indices a column
% Let A be your array
A(idx) = [] ; % remove the lines using the indices
2 个评论
KSSV
2022-3-29
Yes, if it is an array use A(idx), if it is a matrix, A(idx,:). I have considered it as an array. :)
更多回答(1 个)
Arif Hoq
2022-3-29
try this loop:
A=(1:9990)'; % making an array
idx=2000; % taken value from 2000
count=(size(A,1)+10)/idx;
first_index=A(1:1990); % first index value to make the loop simple
C=cell(count,1);
for i=2:count
C{i}=A(idx*(i-1):(idx*i)-10);
end
mat=[C{:}]
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!