【问题标题】:Index exceed matrix dimension error when reading a csv file using matlab?使用matlab读取csv文件时索引超出矩阵维度错误?
【发布时间】: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 文件。

我想跳过那条线,但不知道该怎么做……有什么想法吗?我该怎么做才能让它发挥作用?

非常感谢,

苏菲

【问题讨论】:

    标签: matlab csv matrix


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!确实,当我现在使用 p(1:4) 时,效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多