用不同密度的椭圆在Matlab中聚类(x,y)坐标
我有一些数据点保存在CSV文件中。奇数列表示X值,偶数列表示Y值。大约有30列和800行。我想在Matlab中导入这些数据点,使其可视化,如下图所示(第一幅)。我可以选择单色。如图所示,我的观点完全相似。我想在闭合点周围画一个椭圆,每一组点至少画两个椭圆,以显示不同的密度 请帮忙!如果我的问题不清楚,请看图片,我想要这样的东西,但我可以使用单色。所有点都来自单个CSV文件 编辑:我正在使用csvread从CSV文件中获取点。要逐列阅读,我使用以下代码。但我认为有更有效的方法来做到这一点。正如我所说,我有30列和大约800行用不同密度的椭圆在Matlab中聚类(x,y)坐标,matlab,plot,cluster-analysis,Matlab,Plot,Cluster Analysis,我有一些数据点保存在CSV文件中。奇数列表示X值,偶数列表示Y值。大约有30列和800行。我想在Matlab中导入这些数据点,使其可视化,如下图所示(第一幅)。我可以选择单色。如图所示,我的观点完全相似。我想在闭合点周围画一个椭圆,每一组点至少画两个椭圆,以显示不同的密度 请帮忙!如果我的问题不清楚,请看图片,我想要这样的东西,但我可以使用单色。所有点都来自单个CSV文件 编辑:我正在使用csvread从CSV文件中获取点。要逐列阅读,我使用以下代码。但我认为有更有效的方法来做到这一点。正如我所
b = csvread ('C:\Users\Riyadh\Desktop\ThumbTouch All\HeatMaps\Tap 3 Rig R.csv', 1, 0, [1 0 870-1 0 ] )
第二张图片显示了我目前所拥有的内容
但是这些列是?我想是集群
M = csvread ('C:\Users\Riyadh\Desktop\ThumbTouch All\HeatMaps\Tap 3 Rig R.csv', 1, 0, [1 0 870-1 0 ] )
[n m] = size(M);
C=hsv(m);
for i=1:2:m,
idx = find ((M(:,i)>0) & (M(:,i+1)>0));
% evaluate center
xc=mean(M(idx,i));
yc=mean(M(idx,i+1));
% evaluate standard deviation
xs=std(M(idx,i));
ys=std(M(idx,i+1));
hold on;
%draw
rectangle('Position',[xc-3*xs,yc-3*ys,6*xs,6*ys],'Curvature',[1,1], 'EdgeColor', C(i,:), 'FaceColor', C(i,:));
rectangle('Position',[xc-2*xs,yc-2*ys,4*xs,4*ys],'Curvature',[1,1], 'EdgeColor', C(i,:)*0.9, 'FaceColor', C(i,:)*0.8);
%plot points
plot(M(idx,i), M(idx,i+1),'.', 'Color', C(i,:)*0.7);
end
代码
x=M(:,i),y=M(:,i+1)
)图像显然来自维基百科: 该页面还表示,该图像是由ELKI生成的;那你为什么不试着用ELKI代替Matlab呢 为了使这种可视化有意义,您需要使用EM集群。我很确定它已经存在于Matlab中,而且它可能会带来类似的可视化效果,即等高线图 但是,您的数据可能太小 你有30个维度,为了使协方差矩阵在统计上是合理的,你应该至少有3*d*d=2700行,作为经验法则。对于每个集群,即。从你的情节来看,你至少有16个簇,所以你应该有大约50000个点。或者更少的维度
最后但并非最不重要的一点是,我不知道等高线图在二维以外是否有任何意义(如果你有三维可视化功能,可能是三维的)“我不熟悉Matlab,实际上我有很短的时间来做它。请帮帮忙!”——这是一种让你的问题被否决而得不到帮助的快速方法。做一些研究,尝试解决您自己的问题,并为您的代码提供一个特定的问题,这就是如何在这里获得帮助。我建议您先学习Matlab中的函数,然后再开始学习。到目前为止,您的代码是什么样子的?我想你已经找到了,至少…谢谢你的评论。我知道你的意思…@不喜欢:是的。我正在使用这两个函数。我将上传一张我现在拥有的图片。让我们看看我是否可以编辑它。@Notlikethat:添加了编辑。谢谢你的回复。我添加了一些编辑。请考虑一下。也许对你的解释会对我有很大帮助。所谓簇,我指的是紧密相连的一组点。这些集合随机地位于CSV文件中。我使用这段代码,但我现在没有Matlab。请重试-C(I)->C(I,:)更改的绘图(M(:,I),M(:,I+1),','颜色',C(I,:)。。。。但是你有很多0,0点感谢你的建议。不过我是从别的地方拍的这张照片。可能源代码是Wiki。我不知道埃尔基是什么。我对Matlab不太熟悉,所以我想,我会走这条路。。。