2014-09-04 154 views
0

csvRead的Scilab文档指出可以同时指定范围(从行,列到列,列)以及要忽略的标题行数。不过,我似乎只能一次做一个。是否可以在Scilab的csvRead中指定范围和标题?

这就是我正在做的事情(基于文档中的一个示例;使用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

我确定这是一个scilab中的bug,因为如果我查看源代码,我会发现,如果给出第8个参数(头文件),那么第7个参数(范围)不会被评估。 这是一个由错误比较运算符(==代替> =)导致的简单错误。

+0

我打算在Scilab问题跟踪器上添加这个,但是你(我想!)把我打败了,谢谢你的确认。 – ClickyKeys 2014-09-15 08:23:59

相关问题