Reading a massive file but skipping several lines / rows at a fixed interval
1 回表示 (過去 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 で Get Started with MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!