Matlab打开csv文件:使用MATLAB读取CSV文件

我试图用 MATLAB 读取.csv 文件。这是我的代码:

csvread('out2.csv')

这就是 out2.csv 的样子:

03/09/2013 23:55:12,129.32,129.33
03/09/2013 23:55:52,129.32,129.33
03/09/2013 23:56:02,129.32,129.33

在 windows 上我能够用 xlsread 函数读取这个完全相同的文件,没有问题。我目前在 linux 机器上。当我第一次使用 xlsread 读取文件时,我被告知“文件不是可识别的格式”,所以我切换到使用 csvread。但是,使用 csvread,我得到以下错误消息:

Error using dlmread (line 139)
Mismatch between file and format string.
Trouble reading number from file (row 1u, field 2u) ==> /09/2013
23:55:12,129.32,129.33\n
Error in csvread (line 48)
m=dlmread(filename, ',', r, c)

我认为日期中的 '/' 是导致问题的原因。在 windows 上,第 1 列被解释为字符串。在 linux 上它似乎被解释为数字,所以它试图读取数字并在反斜杠处失败。这是我认为至少正在发生的事情。任何帮助将不胜感激。

31

csvread只能读取双打,所以它在日期字段上会阻塞。使用textscan

fid = fopen('out2.csv');
out = textscan(fid,'%s%f%f','delimiter',',');
fclose(fid);
date = datevec(out{1});
col1 = out{2};
col2 = out{3};

更新(2017 年 8 月 31 日)

由于这是在 2013 年写的,MATLAB 的textscan函数已更新为直接读取日期和时间。

fid = fopen('out2.csv');
out = textscan(fid, '%{MM/dd/uu HH:mm:ss}D%f%f', 'delimiter', ',');
fclose(fid)
[date, col1, col2] = deal(out{:});

下面提到的 @ Victor Hugo(目前是我个人的这种情况)将使用readtable,它将接受与textscan 相同的格式字符串,但将结果直接组装到表对象中:

dataTable = readtable('out2.csv', 'Format', '%{MM/dd/uu HH:mm:ss}D%f%f')
dataTable.Properties.VariableNames = {'date', 'col1', 'col2'};
dataTable =
  3×3 table
           date             col1      col2 
    ___________________    ______    ______
    03/09/2013 23:55:12    129.32    129.33
    03/09/2013 23:55:52    129.32    129.33
    03/09/2013 23:56:02    129.32    129.33
6

不幸的是,csvreadthe documentation明确指出:

M = csvread(filename)读取逗号分隔值格式的文件filename该文件只能包含数值。

由于/既不是逗号,也不是数值,因此会产生错误。

2

您可以使用readtable,因为它将接受任何输入。

https://www.mathworks.com/help/matlab/ref/readtable.html
0

是的 xlsread 需要安装 Microsoft Excel,除非它在“基本”模式下运行,并且“基本”模式仅读取.xls.xlsx 和.xlsm 文件。

另一种选择是在 MATLAB 的文件交换中发布的许多用户编写的函数,这些函数将在 linux 上运行,并且在读取非格式化内容时更加灵活。

一个例子:https://www.mathworks.com/matlabcentral/fileexchange/75219-csv2cellfast-import-csv-files-on-machines-without-excel

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(617)
什么是ckd:什么是Python什么是“爆炸”是PHP
上一篇
高级情侣cp昵称符号:使用保留父结构的 cp创建符号链接
下一篇

相关推荐

  • linux切换到超级用户:```shecho 'Hello World' > hello_world.txt```

    Linux切换到超级用户的方法有两种:使用su命令:…

    2023-03-24 09:03:15
    0 45 93
  • cvt变速箱结构图解:CVT变速箱的工作原理

    CVT变速箱是一种无级变速箱,它的结构由两个部分组成:输入轴和输出轴。输入轴由发动机驱动,输出轴将变速箱的输出转移到车轮上。输入轴上安装有一个可变的滑轮,它可以改变输入轴的传动比,从而改变变速箱的输出比。另外,输入轴上还安装有一个液压系统,它可以控制滑轮的位置,从而改变输入轴的传动比。…

    2023-04-02 04:00:04
    0 51 32
  • android cursor遍历 title = row[0] value = row[1] dic[titl

    示例示例Android中使用Cursor遍历数据库的步骤如下:获取一个Cursor对象,通过的()方法来获取;…

    2023-05-06 13:38:40
    0 84 77
  • cv树洞柒夜事件CV树洞中的秘密与惊奇

    cv树洞柒夜事件是一个有趣的计算机视觉活动,它提供了一种新的方式来利用计算机视觉技术来探索和发现景观。它始于2020年7月,由一群热爱计算机视觉的研究者和开发者发起,他们希望通过使用机器学习技术来探索景观中的精彩之处。cv树洞柒夜事件的目标是使用机器学习技术来探索景观中的精彩之处,并利用这些发现来改善景观设计。参与者需要使用机器学习技术来探索景观,并利用这些发现来改善景观设计。参与者可以使用Python,OpenCV,TensorFlow等技术来完成任务,并将其发布在GitHub上。…

    2023-01-09 12:42:42
    0 66 33
  • javascript:void什么意思:无效的JavaScript函数

    javascript:void是一个JavaScript语句,它的作用是返回undefined的值。它可以用来替代不需要返回值的函数或表达式,也可以在页面中添加一个空链接,使其不会跳转到其他页面。…

    2023-04-13 05:37:41
    0 48 44
  • java hashcode方法:Unlocking the Power of Java Hashcode for Maximum

    Java中的hashCode()方法是Object类中定义的一个方法,它的作用是返回一个对象的哈希码值。哈希码是一个整数,它是根据对象的地址或者存储在对象中的某些值来计算出来的。…

    2023-05-11 09:16:15
    0 18 93
  • java protected关键字:使用protected关键字保护类成员的优点

    示例示例关键字是java中的修饰符,它可以修饰类、变量和方法。修饰类:修饰的类只能在同一个包内被访问,如果子类继承了修饰的父类,则子类可以在不同包内访问父类的成员。…

    2023-04-18 04:45:37
    0 94 20
  • go和come的区别:去吧!来吧!改变你的未来

    示例示例go和come的区别:Go是一个动词,表示“去”的意思,指的是从一个地方到另一个地方的运动。Come是一个动词,表示“来”的意思,指的是从另一个地方到当前地方的运动。…

    2023-05-25 16:09:00
    0 85 39

发表评论

登录 后才能评论

评论列表(10条)