2

问题

以大型数组作为输入( 6.7E6 个元素)运行散点图函数时内存不足。

方法

我在大小为(nx 1)的单元格中有两组大型数据。

xCell = cell(n,1);
yCell = cell(n,1);

单元格内的数据是多个可变大小的数组(VariableSize x 1)。我将每个单元格中的所有数组连接成一个数组。

% Combine cells into one array
x = cat(1,xCell{:});
y = cat(1,yCell{:});
% Clear unnecessary variables
clear xCell yCell

我最终得到两个具有相同大小(6.7E6 个元素)的数组xy准备好作为散点图的输入。执行我的代码后,我最终遇到了内存错误。

输出

??? Out of memory. Type HELP MEMORY for your options.

我已经用尽了我的计算机可用的堆空间量,并且我没有在计算机上运行其他任何东西。

客观的

我想一次只加载数据的一部分(子数组),同时创建散点图并保留较小的子数组都只是一个较大系列的一部分这一事实。

4

1 回答 1

3

您可以使用FEX 中的cloudPlotplot(Big)等工具。cloudPlot将有助于可视化二维数据集的分布。当查看非常大的数据集时,它特别有用,plot(x,y,'.')因为测量点相互重叠,因此常规只会用纯色填充绘图。 plot(Big)截取进入绘图的数据,并将其减少到考虑到屏幕上可用像素数的情况下看起来相同的最小可能集。然后它会在用户缩放或平移时更新数据。当用户必须绘制大量数据并进行可视化探索时,这很有用。

在此处查看有关如何可视化 2d 数据分布的更多信息。

于 2013-11-05T07:39:30.723 回答