【问题标题】:MATLAB reading CSV file with timestamp and valuesMATLAB 读取带有时间戳和值的 CSV 文件
【发布时间】:2016-02-11 06:43:37
【问题描述】:

我有以下来自 CSV 文件的示例。结构是:

Date      ,Time(Hr:Min:S:mS), Value
2015:08:20,08:20:19:123     , 0.05234
2015:08:20,08:20:19:456     , 0.06234

然后我想将其读入 MATLAB 中的矩阵。

尝试:

Matrix = csvread('file_name.csv');

还尝试格式化字符串。

fmt = %u:%u:%u %u:%u:%u:%u %f
Matrix = csvread('file_name.csv',fmt);

问题是当文件被读取时格式错误并且显示不同。

任何帮助或建议将不胜感激!

编辑

当使用@Adriaan 回答时,结果是

2015 -11 -9
8    -17 -1

所以看来 MATLAB 认为 '-' 是分隔符(分隔符)

【问题讨论】:

    标签: matlab csv matrix import


    【解决方案1】:
    Matrix = csvread('file_name.csv',1,0);
    

    csread 不支持格式说明符。只需输入标题行的数量(我把它作为一个例子)和标题列的数量,0。

    但是,您的文件包含非数字数据。因此使用importdata 导入它:

     data = importdata('file_name.csv')
    

    这将为您提供一个结构,data 有两个字段:data.data 包含数字数据,即包含您的 value 的向量。 data.textdata 是一个包含其余数据的单元格,您需要前两列并从中提取数字,即

    for ii = 2:size(data.textdata,1)
        tmp1 = data.textdata{ii,1};
        Date(ii,1) = datenum(tmp1,'YYYY:MM:DD');
        tmp2 = data.textdata{ii,2};
        Date(ii,2) = datenum(tmp2,'HH:MM:SS:FFF');
    end
    

    感谢@Excaza,事实证明支持毫秒。

    【讨论】:

    • 尝试您的解决方案时请查看编辑:)
    • @user3536870 我不明白您是如何使用此处提供的方法从提供的样本数据中获得数字的
    • 我通过使用 Matrix = csvread('filename.csv',1,0); 得到了结果当我尝试这样做时,循环不在答案中,然后它在我对问题的编辑中给出了结果。而且没有标题
    • @user3536870 循环版本似乎工作正常。请注意,如果您的标头不包括在内,您需要从 1 而不是 2 运行 for 循环。其他所有内容都可以保持原样
    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多