0

我有一个看起来像这样的文件:

RD|Action Code|State Code|County Code|Site ID|Parameter|POC|Sample Duration|Unit|Method|Date|Start Time|Sample Value|Null Data Code|Sampling Frequency|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method Detectable Limit|Uncertainty
RC|Action Code|State Code|County Code|Site ID|Parameter|POC|Unit|Method|Year|Period|Number of Samples|Composite Type|Sample Value|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method Detectable Limit|Uncertainty
RD|I|01|101|1002|88501|3|1|105|733|20130101|00:00|11.1|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130101|01:00|16.7|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130101|02:00|17.7|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130101|03:00|15.7|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|10:00||BJ||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|11:00|6.5|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|12:00|6.3|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|13:00|0|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|14:00|-0.2|||||||||||||||

该文件持续的时间更长,但总体思路是有 2 行标题,然后是由“|”分隔的数据。

我一直在尝试跳过标题行,但我尝试过的没有任何效果。删除标头后,我尝试使用以下脚本读取文件的其余部分。第一行的前两列有效,但其余为空。

我应该如何编辑我的代码,以便它跳过标题并阅读所有数据行?我很确定我没有正确的 %d 部分。

fid = fopen('file.txt','rt');
data = textscan(fid, '%s%s|%s|%d%d|%d|%d|%d|%d|%d|%d|%d|%d:%d|%f|%s||||||||||||||', 'HeaderLines', 4, 'Delimiter', '|');
fclose(fid);

% Divide data and save into variable
[RD,Action_Code,State_Code,County_Code,Site_ID,Parameter,POC,Sample_Duration,Unit,Method,Date,Start_Time,Sample_Value,Null_Data_Code,Sampling_Frequency,Monitor_Protocol_MP_ID,Qualifier_1,Qualifier_2,Qualifier_3,Qualifier_4,Qualifier_5,Qualifier_6,Qualifier_7,Qualifier_8,Qualifier_9,Qualifier_10,Alternate_Method_Detectable_Limit,Uncertainty] = deal(data{:});
4

1 回答 1

2

我想你想要这样的东西。

最后那几列会一直是空白的吗?我假设没有,只是把它们放在格式字符串中。

在为您提供每一行之后,我省略了对数据的操作textscan,但这应该是直截了当的。

fid = fopen('test.txt','rt');
format='%s %s %d %d %d %d %d %d %d %d %d %d:%d %f %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d';
data=textscan(fid,format,'HeaderLines',2,'Delimiter','|','EmptyValue',0);
fclose(fid);
于 2013-09-20T23:07:47.753 回答