Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用不同密度的椭圆在Matlab中聚类(x,y)坐标_Matlab_Plot_Cluster Analysis - Fatal编程技术网

用不同密度的椭圆在Matlab中聚类(x,y)坐标

用不同密度的椭圆在Matlab中聚类(x,y)坐标,matlab,plot,cluster-analysis,Matlab,Plot,Cluster Analysis,我有一些数据点保存在CSV文件中。奇数列表示X值,偶数列表示Y值。大约有30列和800行。我想在Matlab中导入这些数据点,使其可视化,如下图所示(第一幅)。我可以选择单色。如图所示,我的观点完全相似。我想在闭合点周围画一个椭圆,每一组点至少画两个椭圆,以显示不同的密度 请帮忙!如果我的问题不清楚,请看图片,我想要这样的东西,但我可以使用单色。所有点都来自单个CSV文件 编辑:我正在使用csvread从CSV文件中获取点。要逐列阅读,我使用以下代码。但我认为有更有效的方法来做到这一点。正如我所

我有一些数据点保存在CSV文件中。奇数列表示X值,偶数列表示Y值。大约有30列和800行。我想在Matlab中导入这些数据点,使其可视化,如下图所示(第一幅)。我可以选择单色。如图所示,我的观点完全相似。我想在闭合点周围画一个椭圆,每一组点至少画两个椭圆,以显示不同的密度

请帮忙!如果我的问题不清楚,请看图片,我想要这样的东西,但我可以使用单色。所有点都来自单个CSV文件

编辑:我正在使用csvread从CSV文件中获取点。要逐列阅读,我使用以下代码。但我认为有更有效的方法来做到这一点。正如我所说,我有30列和大约800行

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
代码

  • 导入M上的数据
  • 然后它获取列2x2(
    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不太熟悉,所以我想,我会走这条路。。。