如何在 Matlab 中 "smooth" 散点边界
How to "smooth" boundary of scatter in Matlab
我有一个大小为 nx2
的矩阵 A
,在 Matlab 中收集 2D 点。它已上传 here(不幸的是,我无法用简单的代码重现它)。
当我使用 scatter
绘制它们时,我得到以下图片,其中
黑色区域非凸
区域的边界非常"unsmooth",散点沿边界非常明显。
scatter(A(:,1), A(:,2), 50,'k', 'filled')
xlim([-4 4])
ylim([-4 4])
问题:请问有没有什么办法可以平滑区域的边界。我考虑过使用 patch
,但考虑到该区域是非凸的,我不知道如何获取它的顶点。我还尝试增加散点的大小,但结果更糟。有什么解决办法吗?
您可以使用 boundary
找到构成边界的数据点的 索引 。接下来,您将必须使用这些索引 select 数据点以获得包含数据的 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
我有一个大小为 nx2
的矩阵 A
,在 Matlab 中收集 2D 点。它已上传 here(不幸的是,我无法用简单的代码重现它)。
当我使用 scatter
绘制它们时,我得到以下图片,其中
黑色区域非凸
区域的边界非常"unsmooth",散点沿边界非常明显。
scatter(A(:,1), A(:,2), 50,'k', 'filled')
xlim([-4 4])
ylim([-4 4])
问题:请问有没有什么办法可以平滑区域的边界。我考虑过使用 patch
,但考虑到该区域是非凸的,我不知道如何获取它的顶点。我还尝试增加散点的大小,但结果更糟。有什么解决办法吗?
您可以使用 boundary
找到构成边界的数据点的 索引 。接下来,您将必须使用这些索引 select 数据点以获得包含数据的 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