【发布时间】:2013-01-02 22:05:02
【问题描述】:
我有一些 cvs 文件,我想从中读取特定的行,以便从中收集特定的信息。 虽然我发现如果手动删除一行,我可以很好地阅读这些文件,但我希望能够使用一些代码跳过这一行,以避免遍历每个文件并手动删除这一行。
示例: 我的文件是这样的
- blabla
- blabla
- blabla
- S>
- blabla
- blabla
- nquan = 12
- blabla
我正在使用 matlab 中的以下代码读取此文件:
din = 'C:/example/';
CNVfiles = dir ([din '*.cnv']);
fid = fopen([din CNVfiles], 'r');
我希望能够从“# nquan = 12”行中获取数字“12”(这是 我稍后需要的列(Ncol),
p = ' ';
while ~isequal(p(1:7),'* nquan')
p = fgets(fid);
end
Ncol = str2double(p(11:end));
fclose(fid);
但是,它给我一个错误,指出“结束”处的“索引超出矩阵维度”......当我查看“p”是什么时,它告诉我“* S>”,因此我猜我读取文件中的“* S>”行时出现问题..
当我手动删除该行“* S>”时,一切正常,我的 Ncol = 12。但是,我想避免手动执行此操作,因为我有一堆这样的 cnv 文件。
我想跳过那条线,但不知道该怎么做……有什么想法吗?我该怎么做才能让它发挥作用?
非常感谢,
苏菲
【问题讨论】: