csvRead的Scilab文档表明,既可以指定范围(从row,col到row,col),也可以指定要忽略的标题行数。但是我似乎只能一次做一个。
这就是我正在做的事情(基于文档中的一个示例;使用Scilab 5.5.0)。首先,创建一个CSV文件进行回读:
CSV = ["1,0,0,0,0";
"0,1,0,0,0";
"0,0,1,0,0";
"4,4,1,2,0";
"4,63,1,2,0";
"4,63,1,4,233";
"42,3,23,2,23";
];
filename = fullfile(TMPDIR , 'foo.csv');
mputl(CSV, filename);
现在回读第2行,第1列到第5行,第4列的数据:
csvRead(filename, [], [], "double", [], [], [2 1 5 4])
这给出了结果
ans =
0. 1. 0. 0.
0. 0. 1. 0.
4. 4. 1. 2.
4. 63. 1. 2.
现在假设我想跳过我的CSV文件中的第一行(它可能包含一些不重要的标题信息)。我会写:
csvRead(filename, [], [], "double", [], [], [], 1)
给出了结果
ans =
0. 1. 0. 0. 0.
0. 0. 1. 0. 0.
4. 4. 1. 2. 0.
4. 63. 1. 2. 0.
4. 63. 1. 4. 233.
42. 3. 23. 2. 23.
到目前为止一切顺利。如果我想跳过第一行并且只存储矩阵的一部分,我认为我可以写:
csvRead(filename, [], [], "double", [], [], [2 1 5 4], 1)
但是这给出了与以前相同的答案,即只删除标题行并忽略范围:
ans =
0. 1. 0. 0. 0.
0. 0. 1. 0. 0.
4. 4. 1. 2. 0.
4. 63. 1. 2. 0.
4. 63. 1. 4. 233.
42. 3. 23. 2. 23.
是否可以同时指定范围和标题?我只是修补了Scilab所以可能会遗漏一些明显的东西。
答案 0 :(得分:1)
我确定这是scilab中的一个错误,因为如果我查看源代码,我会看到,如果给出第8个参数(标题),则不评估第7个参数(范围)。 这是由错误的比较运算符(==而不是> =)引起的简单错误。