使用matlab读取csv文件时,索引超出矩阵维度错误?

时间:2013-01-19 06:20:33

标签: matlab csv matrix

我有几个cvs文件,我想从中读取特定行,以便从中收集特定信息。 虽然我发现如果手动删除一行我能够很好地阅读这些文件,但我希望能够使用一些代码跳过这一行,以避免浏览这些文件并手动删除这一行。

实施例: 我的文件看起来像这样

  • 布拉布拉
  • 布拉布拉
  • 布拉布拉
  • S>
  • 布拉布拉
  • 布拉布拉
  • nquan = 12
  • 布拉布拉

我正在使用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);

然而,它给我一个错误,在'结束'说明'索引esceed矩阵维'....当我看'p'是什么时,它告诉我'* S>'因此我猜测我在阅读'* S>'时遇到了问题文件中的行..

当我手动删除该行'* S>'时,它运行良好,我得到我的Ncol = 12.但是,我想避免手动执行此操作,因为我有一堆像这样的cnv文件。 / p>

我想跳过那条线,但不知道怎么做......任何想法在这里有什么不对?我该怎么做才能使它有效?

非常感谢,

1 个答案:

答案 0 :(得分:1)

您收到此错误是因为当您的循环到达文件中包含“* S>”的行时,p的值等于'* S>'。如您所见,p是一个长度为4的数组。当您现在尝试p(1:7)时,Matlab会因为您访问不存在的元素而抱怨。