将.csv文件调用到Octave

use*_*758 10 csv octave

我有一个用C++编写的代码,它输出一个.csv文件,其中包含三列数据(时间,力,高度).我想使用Octave绘制数据,或者使用C++文件中的八度函数图(我知道这是可能的,但我不一定需要这样做).

现在我有简单的.m文件:

filename = linear_wave_loading.csv;
M = csvread(filename);
Run Code Online (Sandbox Code Playgroud)

只是为了练习将这个文件变为八度(将尝试并绘制后)我收到此错误.

error: dlmread: error parsing range
Run Code Online (Sandbox Code Playgroud)

将.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
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

Mar*_*kus 8

使用八度音程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
Run Code Online (Sandbox Code Playgroud)

一般情况下,如果您的值分隔符不是逗号,请使用dlmread.此外,您必须跳过两个标题.理论上的dlmread也可以使用制表符分隔值'\t',但是由于不连续的制表符大小(可能只是一个复制粘贴问题),这会让你失望,因此将一个空格' '作为分隔符是一种解决方法.你应该更好地保存.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
Run Code Online (Sandbox Code Playgroud)

然后你可以轻松做到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
Run Code Online (Sandbox Code Playgroud)

通常它会自动重新成形,但是如果是空间分隔符,它通常会失败,所以你必须自己重塑它(并且在任何情况下都转换为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
}
Run Code Online (Sandbox Code Playgroud)

但要小心,那么一切都是你牢房里的一根绳子.