4

可能重复:
matlab:具有大量数据点的散点图

我有 3 个向量,每个向量包含 315,000 个元素。X、Y 和 Z。X 和 Y 是坐标,Z 是一个值。我必须将坐标绘制为二维图中的点,Z 是 X 和 Y 的每个坐标处的颜色指示器。我尝试过“分散”命令,但速度非常慢。有人会建议更好的方法吗?

谢谢!

4

3 回答 3

1

根据您要查找的颜色图类型,您可以尝试类似

zmin=min(Z);
zmax=max(Z);
map=colormap;
color_steps=size(map,1);

hold on
for i=1:color_steps
    ind=find(Z<zmin+i*(zmax-zmin)/color_steps & Z>=zmin+(i-1)*(zmax-zmin)/color_steps);
    plot(X(ind),Y(ind),'o','Color',map(i,:));
end

这个发现有点贵,但似乎比scatter. 我相信你可以进一步优化它。

于 2013-01-14T19:20:38.390 回答
0

在这里尝试cline从 MATLAB 文件交换。看起来它完全符合您的要求。

于 2013-01-14T18:43:52.447 回答
0

您的代码很慢,因为向量的大小很大,而不是因为 SCATTER 函数。尝试将它们分解为更小尺寸的向量(例如,每个向量 10 个元素)并将每个向量放入元胞数组的一个元胞中。然后循环遍历单元阵列并单独分散每个较小的向量,以避免将太多加载到内存中。

hold on
for i=1:numel(XcoordCellArray):
  scatter(XcoordCellArray{i},YcoordCellArray{i},S,ZcoordCellArray{i})
end
于 2013-01-14T19:02:42.880 回答