【问题标题】:Matlab - how to read a file with a large number of integer columns using textscanMatlab - 如何使用 textscan 读取具有大量整数列的文件
【发布时间】:2012-10-09 11:41:36
【问题描述】:

我有一个文件,其中包含以下格式的数据:

filename.jpg,132,234,234,345,4555,23333,344,...,333

我已经输入... 来标记我有一个很长的整数序列这一事实。在每一行上,我总共有 132 个整数。

我想读取矩阵中的数字,该矩阵包含132 列和与输入文件中一样多的行。如何使用textscan 函数读取这些数据?我应该如何指定这种格式?我还想将第一列文件名读入一个元胞数组。

对于元胞数组,我使用了以下语法:

fid = fopen(inputPath);
buffer = textscan(fid, '%s%*[^\n]', 'Delimiter', ',');

close(fid);

【问题讨论】:

    标签: matlab file-io csv


    【解决方案1】:

    您可以使用csvread 来跟踪您对textscan 的第一次呼叫:

    A = csvread('data.txt', 0, 1);
    

    最后两个参数指定数据开始的行和列。您的单元格将包含来自第一列的字符串,A 包含一个包含数据的矩阵。

    否则,如果您确实必须使用textscan,请在旁边创建格式字符串:

    fid = fopen('data.txt', 'r');
    % crate a string with as many %f as you need
    fmt = ['%s' repmat('%f', 1, 132)];
    buffer = textscan(fid, fmt, 'Delimiter', ',');
    names = buffer{1};
    A = [buffer{2:end}];
    fclose(fid);
    

    【讨论】:

    • 当我尝试使用 csvread 时收到以下错误:使用 dlmread 时出错(第 139 行)文件和格式字符串不匹配。从文件读取麻烦数(行1U,2U字段)==> _01_01_041_00.png,345,211,406,206,393,239,370,285,411,280,331,300,429,279,343,313,421,296,360,325,412,314,394,326,320,203,358,194,397,190,418,191,338,196,408,189,328,198,348,193,403,190,413,190,381,20错误csvread(线48)M = dlmread(文件名, '',R,C); 跨度>
    • @Simon 好吧,像我一样使用它 - 带有两个附加参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2013-09-12
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多