从 PCE-VDL 数据记录器设备导入 OCTAVE 数据并将小数点转换为小数点

OCTAVE data import from PCE-VDL data logger device and conversion of decimal coma to decimal point

我有一个测量设备 PCE-VDL,它以下面的 CSV 格式提供测量结果,我需要将其导入 OCTAVE 以进行进一步调查。

特别是我需要导入带有 xyz 加速数据的最后 3 列。 文件为 CSV 格式,以分号“;”分隔。

我试过:

A_1 = importdata ("file.csv", ";", 3); 

但已经收到

error: missing_idx(10): out of bound 9

CSV 文件如下所示:

@PCE-VDL X - TableView series
@2020.16.11
@Date;Time;Duration [s];t [°C];RH [%];p [mbar];aX [g];aY [g];aZ [g];
2020.28.10;16:16:32:0000;00:000;;;;0,0195;-0,0547;1,0039;
2020.28.10;16:16:32:0052;00:005;;;;0,0898;-0,0273;0,8789;
2020.28.10;16:16:32:0104;00:010;;;;0,0977;-0,0313;0,9336;
2020.28.10;16:16:32:0157;00:015;;;;0,1016;-0,0273;0,9297;

最后 3 列中的数字也有小数点逗号而不是小数点。所以可能也应该做一些转换。

非常感谢您的帮助。 问候

编辑:2020 年 11 月 18 日 感谢帮助。我现在尝试了以下内容:

A_1_str = fileread ("file.csv"); 
A_1_str_m = strrep (A_1_str, ".", "-");
A_1_str_m = strrep (A_1_str_m, ",", ".");
save "A_1_str_m.csv" A_1_str_m;

A_1 = importdata ("A_1_str_m.csv", ";", 8);

并且仍然收到错误:file_content(140):超出范围 139

第一列的时间格式可能有问题,我不想看。我只需要最后三列。 转换后,文件如下所示:

# Created by Octave 5.1.0, Wed Nov 18 21:40:52 2020 CET <zdenek@ASUS-F5V>
# name: A_1_str_m
# type: sq_string
# elements: 1
# length: 7849
@PCE-VDL X - TableView series
@2020-16-11
@Date;Time;Duration [s];t [°C];RH [%];p [mbar];aX [g];aY [g];aZ [g];
2020-28-10;16:16:32:0000;00:000;;;;0.0195;-0.0547;1.0039;
2020-28-10;16:16:32:0052;00:005;;;;0.0898;-0.0273;0.8789;
2020-28-10;16:16:32:0104;00:010;;;;0.0977;-0.0313;0.9336;

感谢支持!

你可以先用fileread读取数据,它将数据存储为字符串。然后你可以像这样操作字符串:

new_string = strrep(string, ",", ".");

strrep 替换字符串中出现的所有模式。之后,您将此数据另存为一个单独的文件,或者用处理过的数据覆盖现有文件。完成此操作后,您可以按照之前尝试的方式继续操作。

编辑:2020 年 11 月 19 日

为了避免在新文件中出现额外的标题行,您可以这样保存:

fid = fopen("A_1_str_m.csv", "w");
fputs(fid, A_1_str_m);
fclose(fid);

fputs 只会将字符串写入文件。

您可以使用 dlmread 读取新文件。

A1_buf = dlmread("A_1_str_m.csv", ";");
A1_buf = real(A1);           # get the real value of the complex number
A1_buf(1:3, :) = [];         # remove the headlines
A1 = A1_buf(:, end-3:end-1); # get only the the 3 columns you're looking for

这将为您提供所需的三列。但日期和时间数据将被忽略。

编辑 2020 年 11 月 20 日

abs 替换为 real,因此将保留值的符号。

使用 io 包中的 csv2cell