我有一个大小为A
的矩阵nx2
,在Matlab中收集2D点。它已上载here(很遗憾,我无法使用简单的代码来复制它)。
当我使用scatter
绘制它们时,得到以下图片,其中
黑色区域非凸形
该区域的边界非常“不平滑”,沿边界相当清楚地显示了散点。
scatter(A(:,1), A(:,2), 50,'k', 'filled')
xlim([-4 4])
ylim([-4 4])
问题:我想知道是否存在一种使区域边界平滑的方法。我考虑过使用patch
,但是鉴于该区域是非凸的,因此我不知道如何获得其顶点。我也尝试增加散点的大小,但结果更糟。有解决办法吗?
答案 0 :(得分:3)
您可以使用boundary
查找形成边界的数据点的索引。接下来,您将必须使用这些索引选择数据点,以获取包围数据的x
和y
坐标。
% generate some random data
data = randn(100,2) + [3 4];
% find boundary, returns indices of points in data that define boundary
inds = boundary(data(:,1), data(:,2));
data_bound = data(inds,:);
% plot!
figure(1); clf;
hold on;
fill(data_bound(:,1), data_bound(:,2), 'r'); % fill boundary
scatter(data(:,1),data(:,2),100, 'bx'); % plot data points
plot(data_bound(:,1), data_bound(:,2), 'k', 'linewidth', 2); % boundary