我有一个csv文件'test.csv',如下所示。
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
它有效,但我想找到一个更好的方法。
有人能给我一个更好的方法来提取数据吗?
提前致谢。
答案 0 :(得分:1)
你的方法对我不起作用 - 它给了我错误:
指数超出矩阵维度。
表示循环。
所以,我无法比较你和我的方法的速度。
但我可以给你一个避免循环的解决方案,不仅创建char
数组而且创建double
。看看这个:
[num,txt]=xlsread('test.csv');
func = @(x) x(end-6 : end);
str2num ( cell2mat( cellfun(func,txt,'UniformOutput',false) ) )
这将始终加载每个字符串的最后6个符号并将其转换为double
数组。
希望它有所帮助!