无法将 4 列 CSV 文件加载到 OCTAVE - 输出仅为第一列,或每行 1 个数组
Fail to load a 4 column CSV file into OCTAVE - output is only first column, or 1 array per line
将 csv 文件加载到 OCTAVE 时遇到问题。
编辑:正如 ANDY 和 Eliahu Aaron 所指出的,我将 ;
更改为 ,
。
csvread 4 returns 分隔列,每列以第一行命名。
我的 matlab 脚本抛出这些错误:
error: 'z' undefined near line 13 column 3
error: called from myScript at line 13 column 2
我找不到 -z 即使现在有一个名为 z
的列,它应该从那里计算。
这最终解决了我的问题:
g = cell2mat(A(2:end-1,2));
我的 csv 看起来像这样:
time;z;y;x
5;15084;-1360;-9664
7;15280;-1296;-9784
10;15032;-1384;-9688
30;15160;-1548;-9772
56;15116;-1532;-9660
首先,我必须删除第一行 - 因为矩阵对于八度音阶来说不可读。
如果我尝试 csv2cell 我的文件 - 我只会得到 1 列,每一行都填充了所有值
mycsvdata = csv2cell("file.csv")
如果我尝试 csvread,我会得到 1 列,其中包含第一列名称的值 "ans"...第 2、3 和第 4 列将被忽略。
csvread("file.csv")
当我将相同的 csv 拖放到 matlab 中时 - 我单击绿色勾号,每列都以其第一个单元格命名,并且是一个 var。我最终得到了 4 个变量:时间、z、y 和 x。
在八度音程中,这对我来说是不可能实现的。
我做错了什么?
这似乎是一个基本问题,但我还没有在互联网上找到解决方案。
我需要获取 4 个名为时间、z、y 和 x 的变量,并将第 1(时间)、第 2(z)、第 3(y) 和第 4(x) 列的所有值存储在其中
我是八度音阶的新手并且有一个为 matlab 编写的代码 - 我想将其更改为八度音阶。我什至无法测试我的代码,因为我无法正确加载 csv。这让我很沮丧。
提前致谢
CSV 默认使用 ,
作为列分隔符,但您的文件使用 ;
作为列分隔符。
您可以使用 dlmread("file.csv", ";")
代替 csvread
但它无法读取第一行 time;z;y;x
。
您可以使用csv2cell("file.csv", ";")
,第一行是字符串,其余是数字。
要创建包含字段 time;z;y;x
的结构数组,您可以使用以下代码:
pkg load io
A = csv2cell("file.csv", ";");
B = cell2struct(A(2:end,:),A(1,:),2);
将 csv 文件加载到 OCTAVE 时遇到问题。
编辑:正如 ANDY 和 Eliahu Aaron 所指出的,我将 ;
更改为 ,
。
csvread 4 returns 分隔列,每列以第一行命名。
我的 matlab 脚本抛出这些错误:
error: 'z' undefined near line 13 column 3
error: called from myScript at line 13 column 2
我找不到 -z 即使现在有一个名为 z
的列,它应该从那里计算。
这最终解决了我的问题:
g = cell2mat(A(2:end-1,2));
我的 csv 看起来像这样:
time;z;y;x
5;15084;-1360;-9664
7;15280;-1296;-9784
10;15032;-1384;-9688
30;15160;-1548;-9772
56;15116;-1532;-9660
首先,我必须删除第一行 - 因为矩阵对于八度音阶来说不可读。
如果我尝试 csv2cell 我的文件 - 我只会得到 1 列,每一行都填充了所有值
mycsvdata = csv2cell("file.csv")
如果我尝试 csvread,我会得到 1 列,其中包含第一列名称的值 "ans"...第 2、3 和第 4 列将被忽略。
csvread("file.csv")
当我将相同的 csv 拖放到 matlab 中时 - 我单击绿色勾号,每列都以其第一个单元格命名,并且是一个 var。我最终得到了 4 个变量:时间、z、y 和 x。 在八度音程中,这对我来说是不可能实现的。
我做错了什么? 这似乎是一个基本问题,但我还没有在互联网上找到解决方案。
我需要获取 4 个名为时间、z、y 和 x 的变量,并将第 1(时间)、第 2(z)、第 3(y) 和第 4(x) 列的所有值存储在其中
我是八度音阶的新手并且有一个为 matlab 编写的代码 - 我想将其更改为八度音阶。我什至无法测试我的代码,因为我无法正确加载 csv。这让我很沮丧。
提前致谢
CSV 默认使用 ,
作为列分隔符,但您的文件使用 ;
作为列分隔符。
您可以使用 dlmread("file.csv", ";")
代替 csvread
但它无法读取第一行 time;z;y;x
。
您可以使用csv2cell("file.csv", ";")
,第一行是字符串,其余是数字。
要创建包含字段 time;z;y;x
的结构数组,您可以使用以下代码:
pkg load io
A = csv2cell("file.csv", ";");
B = cell2struct(A(2:end,:),A(1,:),2);