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

如何在Matlab中“平滑”散射边界,matlab,plot,scatter,Matlab,Plot,Scatter,我有一个大小为nx2的矩阵a,在Matlab中收集2D点。不幸的是,它是上传的,我不能用简单的代码复制它 当我使用“散射”绘制它们时,我得到以下图片,其中 黑色区域是非凸的 该区域的边界非常不光滑,散射点沿边界非常可见 scatterA:,1,A:,2,50,'k','filled' xlim[-4] ylim[-4] 问题:我想知道是否有办法使该地区的边界平滑。我曾考虑过使用面片,但考虑到该区域是非凸的,我不知道如何获取其顶点。我还试图增加散射点的大小,但结果更糟。有一些解决方案吗?您可以使用

我有一个大小为nx2的矩阵a,在Matlab中收集2D点。不幸的是,它是上传的,我不能用简单的代码复制它

当我使用“散射”绘制它们时,我得到以下图片,其中

黑色区域是非凸的

该区域的边界非常不光滑,散射点沿边界非常可见

scatterA:,1,A:,2,50,'k','filled' xlim[-4] ylim[-4]

问题:我想知道是否有办法使该地区的边界平滑。我曾考虑过使用面片,但考虑到该区域是非凸的,我不知道如何获取其顶点。我还试图增加散射点的大小,但结果更糟。有一些解决方案吗?

您可以使用它来查找构成边界的数据点的索引。接下来,您必须使用这些索引选择数据点,以获得包含数据的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
可以使用查找构成边界的数据点的索引。接下来,您必须使用这些索引选择数据点,以获得包含数据的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

您可以使用获取区域的边界。谢谢,如何在边界内使用黑色着色?我尝试了k=boundaryA:,1,A:,2,fillAk,1,Ak,2,'r',但给了我一个错误。请看下面的答案,这适用于任何点云。您需要进行任何额外的平滑处理,还是只想获得边界?您可以使用获取区域的边界。谢谢,如何使用黑色在边界内着色?我尝试了k=boundaryA:,1,A:,2,fillAk,1,Ak,2,'r',但给了我一个错误。请看下面的答案,这适用于任何点云。您是否需要进行任何其他平滑处理,还是只想获得边界?