MATLAB:如何读取文本文件的每第N行?
我有一些数据的格式如下:
dtau E_av variance N_sims Time
0.001 0.497951 0.000211625 25 Sun Apr 3 18:18:12 2011
dtau E_av variance N_sims Time
0.002 0.506784 0.000173414 25 Sun Apr 3 18:18:58 2011
现在我想使用 textscan 将每第三行的前 4 列(除了时间之外的任何列)读入 MATLAB;使用 fid = fopen('data.text')
后,我基本上必须循环这个:
results = textscan(fid, '%f %f %f %f', 1,'headerlines',1);
有什么想法吗? 干杯!
I have some data that's formatted as follows:
dtau E_av variance N_sims Time
0.001 0.497951 0.000211625 25 Sun Apr 3 18:18:12 2011
dtau E_av variance N_sims Time
0.002 0.506784 0.000173414 25 Sun Apr 3 18:18:58 2011
Now I want to read the first 4 columns (anything but the time) of every third line into MATLAB using textscan; after using fid = fopen('data.text')
, I basically have to loop this:
results = textscan(fid, '%f %f %f %f', 1,'headerlines',1);
Any ideas?
Cheers!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
fgets
读取直到行尾,并返回该行的文本。因此,只需调用它两次即可跳过两行(丢弃函数的返回值)。fgets
reads until the end of a line, and returns the text on that line. So, just call it twice to skip two lines (discarding the return value of the function).因为您知道您将有 5 个列标签(即字符串),后跟 4 个数值,后跟 5 个字符串(例如
'Sun'
、'Apr'
、' 3'
、'18:18:12'
和'2011'
),您实际上可以将所有数值数据读取到单个 N 字节中-4 矩阵,一次调用 TEXTSCAN:Since you know you will have 5 column labels (i.e. strings) followed by 4 numeric values followed by 5 strings (e.g.
'Sun'
,'Apr'
,'3'
,'18:18:12'
, and'2011'
), you can actually read all of your numeric data into a single N-by-4 matrix with one call to TEXTSCAN: