将带空格的 csv 文件读入 Octave
Reading a csv file with spaces into Octave
我有一些姿势更新 rostopic 数据,我使用 rostopic echo /foo 写入了一个 csv 文件 > foo.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`
我需要:
- 忽略带有 %time 字段的第一行
- 只取每行的第二部分,例如0.157465848996
- 将空格转换为 dlmread 或 csvread 可以使用的格式
- 将所有这些值转换成一个列
矩阵.
例如
0.157465848996
0.160723703902
0.161057770877
0.161579636574
我对 Octave 和一般的科学计算真的很陌生,非常感谢您的帮助。
如果您使用 linux,我建议使用 sed
进行小的预处理,以将所有逗号替换为 space:
sed -i "s#,# #g" your_file
如果您使用 windows 或其他任何东西,替换逗号应该同样容易。一旦你有了这个,在八度音程中,只需使用
i=load("your_file");
vec=i(:,2);
将第二列放入列向量中。
首先,nsec = dlmread (nsecval,"\n",r1,c1) 的尝试问题:
八度错误告诉你它不知道 'nsecval' 是什么。
接下来使用 dlmread,该函数需要文件名、分隔符值、起始行、起始列(从 0 开始),例如:
nsec = dlmread ("foo.csv", ",", 1, 1)
会得到你需要的数据。
我有一些姿势更新 rostopic 数据,我使用 rostopic echo /foo 写入了一个 csv 文件 > foo.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`
我需要:
- 忽略带有 %time 字段的第一行
- 只取每行的第二部分,例如0.157465848996
- 将空格转换为 dlmread 或 csvread 可以使用的格式
- 将所有这些值转换成一个列 矩阵.
例如
0.157465848996
0.160723703902
0.161057770877
0.161579636574
我对 Octave 和一般的科学计算真的很陌生,非常感谢您的帮助。
如果您使用 linux,我建议使用 sed
进行小的预处理,以将所有逗号替换为 space:
sed -i "s#,# #g" your_file
如果您使用 windows 或其他任何东西,替换逗号应该同样容易。一旦你有了这个,在八度音程中,只需使用
i=load("your_file");
vec=i(:,2);
将第二列放入列向量中。
首先,nsec = dlmread (nsecval,"\n",r1,c1) 的尝试问题:
八度错误告诉你它不知道 'nsecval' 是什么。
接下来使用 dlmread,该函数需要文件名、分隔符值、起始行、起始列(从 0 开始),例如:
nsec = dlmread ("foo.csv", ",", 1, 1)
会得到你需要的数据。