【问题标题】:Reading a csv file with spaces into Octave将带有空格的 csv 文件读入 Octave
【发布时间】:2018-10-18 04:52:49
【问题描述】:

我有一些姿势更新 rostopic 数据,我使用 rostopic echo /foo > foo.csv 写入 csv 文件

foo.csv 看起来像:

%time,field
1539675906586600065,0.157465848996
1539675906587352037,0.160723703902
1539675906587656974,0.161057770877
1539675906587693929,0.161579636574

我正在尝试将其导入 Octave 以进行进一步处理,但它并不完全是一个常量分隔符,而且我对 dlmread 或 dlmwrite 没有运气。

我试过了

nsec = dlmread (nsecval,"\n",r1,c1)

 error: 'nsecval' undefined near line 1 column 17 error: evaluating argument list element number 1`

我需要:

  1. 使用 %time, field 忽略第一行
  2. 只取每行的第二部分,例如0.157465848996
  3. 将空格转换为 dlmread 或 csvread 可以使用的格式
  4. 将所有这些值转换为 矩阵。

例如

0.157465848996
0.160723703902
0.161057770877
0.161579636574

总的来说,我对 Octave 和科学计算非常陌生,非常感谢一些帮助。

【问题讨论】:

    标签: octave ros


    【解决方案1】:

    如果您使用的是 linux,我建议使用 sed 进行小预处理,以将所有逗号替换为空格:

     sed  -i "s#,# #g"  your_file
    

    如果您使用的是 windows 或其他任何东西,替换逗号应该同样容易。一旦你有了这个,在八度音阶中,只需使用

    i=load("your_file"); 
    vec=i(:,2);
    

    将第二列放入列向量。

    【讨论】:

      【解决方案2】:

      首先,nsec = dlmread (nsecval,"\n",r1,c1) 的尝试问题:

      八度错误告诉你它不知道'nsecval'是什么。

      接下来使用 dlmread,该函数需要文件名、分隔符值、起始行、起始列(从 0 开始),如下所示:

      nsec = dlmread ("foo.csv", ",", 1, 1)
      

      会得到你需要的数据。

      【讨论】:

        猜你喜欢
        • 2020-11-28
        • 1970-01-01
        • 2011-03-09
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        相关资源
        最近更新 更多