如何在Matlab中“平滑”散射边界

用户名

在Matlab中有一个A尺寸矩阵nx2收集2D点。它被上传到这里(不幸的是,我无法用简单的代码来复制它)。

当我使用它们绘制scatter图时,得到以下图片,其中

  • 黑色区域不凸

  • 该区域的边界非常“不平滑”,沿边界相当清晰地显示了散点。

scatter(A(:,1), A(:,2), 50,'k', 'filled') xlim([-4 4]) ylim([-4 4])

在此处输入图片说明

问:我想知道是否有一种方法可以平滑区域边界。我考虑过使用patch,但是鉴于该区域是非凸的,因此我不知道如何获得其顶点。我也尝试增加散点的大小,但结果更糟。有什么解决办法吗?

灵巧的

您可以boundary用来查找形成边界的数据点索引接下来,您将必须使用这些索引选择数据点,以获取xy包围数据的坐标。

% 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

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章