是否可以在Scilab的csvRead中指定范围和标题?

时间:2014-09-04 13:28:39

标签: scilab

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所以可能会遗漏一些明显的东西。

1 个答案:

答案 0 :(得分:1)

我确定这是scilab中的一个错误,因为如果我查看源代码,我会看到,如果给出第8个参数(标题),则不评估第7个参数(范围)。 这是由错误的比较运算符(==而不是> =)引起的简单错误。