[英]Calling .csv file into Octave
我有一个用C ++编写的代码,它输出一个.csv文件,其中包含三列数据(时间,力,高度)。 我想使用Octave绘制数据,或者使用C ++文件中的八度函数图(我知道这是可能的,但我不一定需要这样做)。
现在我有简单的.m文件:
filename = linear_wave_loading.csv;
M = csvread(filename);
只是为了练习将这个文件变为八度(将尝试并绘制后)我收到此错误。
error: dlmread: error parsing range
将.csv文件加载到八度音程的正确方法是什么?
编辑:这是我的.csv文件的前几行
Wavelength= 88.7927 m
Time Height Force(KN/m)
0 -20 70668.2
0 -19 65875
0 -18 61411.9
0 -17 57256.4
在此先感谢您的帮助。
使用八度音程3.8.2
>> format long g
>> dlmread ('test.csv',' ',2,0)
ans =
0 0 0 -20 70668.2
0 0 0 -19 65875
0 0 0 -18 61411.9
0 0 0 -17 57256.4
一般情况下,如果您的值分隔符不是逗号,请使用dlmread。 此外,您必须跳过两个标题。 理论dlmread可与制表符分隔值太'\\t'
,但是这failes与你给出的例子,因为不连续的标签尺寸(也许它只是一个复制粘贴问题),所以取一个空格' '
作为分隔符是一种解决方法。 你应该更好地保存.csv文件逗号分隔
Wavelength= 88.7927 m
Time Height Force(KN/m)
0, -20, 70668.2
0, -19, 65875
0, -18, 61411.9
0, -17, 57256.4
然后你可以轻松地做dlmread('file.csv',',',2,0)
。
您可以尝试我的csv2cell (不要与io包中的csv2cell混淆!)功能(从未尝试过它<3.8.0)。
>> str2double(reshape(csv2cell('test.csv', ' +',2),3,4))'
ans =
0 -20 70668.2
0 -19 65875
0 -18 61411.9
0 -17 57256.4
通常它会自动重新成形,但是如果是空间分隔符,它通常会失败,所以你必须自己重塑它(并且在任何情况下都转换为double)。
当你需要你的标题时
>> reshape(csv2cell('test.csv', ' +',1),3,5)'
ans =
{
[1,1] = Time
[2,1] = +0
[3,1] = +0
[4,1] = +0
[5,1] = +0
[1,2] = Height
[2,2] = -20
[3,2] = -19
[4,2] = -18
[5,2] = -17
[1,3] = Force(KN/m)
[2,3] = 70668.2
[3,3] = 65875
[4,3] = 61411.9
[5,3] = 57256.4
}
但要小心,那么一切都是你牢房里的一根绳子。
你没有将.csv文件名存储为字符串。 尝试:
filename = 'linear_wave_loading.csv';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.