【问题标题】:Reading specific column from CSV file in matlab从 matlab 中的 CSV 文件中读取特定列
【发布时间】:2013-07-03 05:56:39
【问题描述】:

我正在尝试在 matlab 中读取 CSV 文件。我只想阅读第二列,但下面的代码会打印出 CSV 文件中的所有内容。我必须引入哪些参数或函数才能使其仅读取第二列

FILENAME = 'C:\Users\Desktop\Results.csv';

fid = fopen(FILENAME, 'rt');
a = textscan(fid, '%s', 'HeaderLines',1,'Delimiter',',');
fclose(fid);
celldisp(a)

【问题讨论】:

    标签: matlab csv


    【解决方案1】:

    有几种方法:

    1. 使用cvsread:
      假设文件中有N1

      a = csvread( FILENAME, 0, 1, [0 1 N-1 1 ] );
      
    2. 你也可以考虑xlsread

      a = xlsread( FILENAME, 'B:B' );  
      

      xlsread 文档中查看具体的example

    3. 另一个选项是dlmread

      a = dlmread( FILENAME, ',', [0 1 N-1 1] );
      

    1 - 可以在 this answer by Rody Oldenhuis 中找到一种在 Matlab 中计算文件行数的好方法(且快速)。

    【讨论】:

    • 我刚刚输入 N=10 并得到这个警告:R 和 C 应该匹配 RANGE(1:2)。请改用 DLMREAD(FILE,DELIMITER,RANGE)。 > 在 110 处的 dlmread 在 54 处的 csvread 在 6 处读取???在 145 文件和格式字符串不匹配时使用 ==> dlmread 时出错。无法从文件中读取数字(第 1 行,第 2 字段)==> DFA S 错误 ==> csvread at 54 m=dlmread(filename, ',', r, c, rng); ==> 在 6 a = csvread( FILENAME, 0, 0, [0 1 10 1 ] ) 处读取错误;
    • ???未定义的函数或变量“N”。 ==> 在 6 csvread( FILENAME, 0, 1, [0 1 N 1] ) 处读取错误;
    • @Zara 如果你有一个"undefined ... 'N'" 错误 - 这意味着N 没有定义。你不是设置成10???
    • 文件名 = 'C:\Users\Desktop\Results.csv'; N=10; fid = fopen(文件名, 'rt'); a = csvread( 文件名, 0, 0, [0 1 N 1 ] ); fclose(fid); celldisp(a)
    • @zara 如果文件中有标题行,您可能需要跳过它:a = dlmread( FILENAME, ',', [1 1 N-1 1] );
    猜你喜欢
    • 2020-03-11
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多