【问题标题】:Is there a way to get datastore derived from a .csv file as tall array instead of a tall table in MATLAB?有没有办法让从 .csv 文件派生的数据存储作为 tall 数组而不是 MATLAB 中的 tall 表?
【发布时间】:2019-11-23 21:06:03
【问题描述】:

我开始处理大量数据(来自用神经元培养的多电极阵列),这些数据太大而无法放入 RAM。于是我开始用高桌子,但性能很差。

目前我的工作流程是使用datastore加载.csv文件,然后使用tall存储。

不幸的是,当我想用​​gather将特定数据加载到RAM中时,速度很慢;我想我需要一整周的时间来分析一个实验。

% get the file as tall table:

ds = datastore(fullfile(filepath,filename));
data = tall(ds);

% here is the bottleneck:

temp = data((i-1)*interval+2:interval*i+1,el); % specify one data column
tempTab = gather(temp); 

我读到与 MATLAB 中的矩阵相比,表的性能很差,所以我想知道是否有可能从数据存储中获取数据作为 tall 数组而不是 tall 表?

【问题讨论】:

  • 您可以通过使用右侧列的名称来访问您的列:mycol = data.YourColumnNamemycol 将是一个 tall 数组。
  • 谢谢!这是一个很好的提示!问题是我想对我的数据应用巴特沃斯过滤器。这里在每列中存储一个电极的电压值。通过 .varname 进行分配很棒,但很难通过近 400 列。但它让我找到了一个可行的解决方案(见答案)

标签: matlab performance csv


【解决方案1】:

由于我想在所有行上应用巴特沃斯过滤器),我需要一个解决方案来遍历数据。

将函数应用于 tall 数组的可能性很大,因此我可以简单地执行以下操作:

filteredData = table2array(filterElectrode(ta(:,i))

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多