簡體   English   中英

將.csv文件調用到Octave

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM