matlab:在csv文件的一个单元格中分离时间和数据

时间:2015-12-28 08:17:33

标签: matlab csv

我有一个csv文件'test.csv',如下所示。

enter image description here

class EntryForm extends Model
{
    public $name;
    public $email;

    public function rules()
    {
        return [
            [['name', 'email'], 'required'],
            ['name',  'match', 'pattern' => '/^[a-z]\w*$/i'],
            ['name',  'string', 'length' => [3, 15]],
            ['email', 'email'],
            ['email',  'string', 'length' => [4, 15]],
        ]; 
    }
}

我想在文件中提取数据,如下所示。

P.M. 8:32:06 -0.017
P.M. 8:32:06 -0.018
P.M. 8:32:06 -0.019
P.M. 8:32:06 -0.020
P.M. 8:32:06 -0.021
P.M. 8:32:06 -0.022
P.M. 8:32:06 -0.023
P.M. 8:32:06 -0.024
P.M. 8:32:06 -0.025
P.M. 8:32:06 -0.026
P.M. 8:32:06 -0.027
P.M. 8:32:06 -0.028

我制作了如下的matlab代码。

-0.017
-0.018
-0.019
-0.020
-0.021
-0.022
-0.023
-0.024
-0.025
-0.026
-0.027
-0.028

它有效,但我想找到一个更好的方法。

有人能给我一个更好的方法来提取数据吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你的方法对我不起作用 - 它给了我错误:

  

指数超出矩阵维度。

表示循环。

所以,我无法比较你和我的方法的速度。 但我可以给你一个避免循环的解决方案,不仅创建char数组而且创建double。看看这个:

[num,txt]=xlsread('test.csv');
func = @(x) x(end-6 : end);
str2num ( cell2mat( cellfun(func,txt,'UniformOutput',false) ) )

这将始终加载每个字符串的最后6个符号并将其转换为double数组。 希望它有所帮助!