⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clusterstat.m

📁 一个经典的ICA算法的程序包
💻 M
字号:
function Stat=clusterstat(S,partition,between)%function Stat=clusterstat(S,partition,[between])%%PURPOSE%%To compute various intra- and extra-cluster statistics.%%INPUT %%[An argument in brackets is optional. If it isn't  given or it's% an empty matrix/string, the function will use a default value.] %% S         (matrix) NxN similarity or distance matrix between N%             objects. Must be symmetric.  % partition (1xN vector) partition vector (see explanation for%             'partition vector' in function hcluster) % [between] (scalar) 1: compute between-cluster similarity/distance matrix, %                    0: (default) don't compute% %OUTPUT% % All fields are vectors of size 1xK, where K is the number of clusters% % Stat.N(i)             the number of objects in cluster i%% Stat.internal.min(i)  minimum/average/max internal similarity/distance % Stat.internal.avg(i)  in cluster i% Stat.internal.max(i)  %  Note: if there is only one item in the cluster, the internal statistics%  are set to NaN%% Stat.external.min(i)  minimum/average/max external similarity/distance from% Stat.external.avg(i)  objects of cluster i to the objects of other clusters% Stat.external.max(i)%%DETAILS%%Partition vector divides items  into clusters: partition(i) is%the label  of cluster that item i belongs to. Cluster labels must%be integers 1,2,...,K where K is the number of clusters.  %%"Internal" for cluster k refers to all pairwise%distances/similarities between objects belonging to the same%cluster, i.e., for objects i for which partition(i)==k. %%"External" for cluster k refers to all pairwise%distances/similarities between the members of the cluster k and%members of the other clusters, i.e., the whole similarity matrix%excluding the internal similarities of cluster k.%%If 'between' is set to 1 the function computes also the following%KxK matrices %%Stat.between.min(i,j)%Stat.between.avg(i,j)%Stat.between.max(i,j)%%These include distances/similarities  between clusters i and j%defined as min/average/max pairwise distances between objects%belonging to clusters i and j, respectively. %%SEE ALSO% clusterquality% icassoStability% icassoRindex% rindex%COPYRIGHT NOTICE%This function is a part of Icasso software library%Copyright (C) 2003-2005 Johan Himberg%%This program is free software; you can redistribute it and/or%modify it under the terms of the GNU General Public License%as published by the Free Software Foundation; either version 2%of the License, or any later version.%%This program is distributed in the hope that it will be useful,%but WITHOUT ANY WARRANTY; without even the implied warranty of%MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the%GNU General Public License for more details.%%You should have received a copy of the GNU General Public License%along with this program; if not, write to the Free Software%Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.% ver 1.2. 100105if nargin<2,   error('You must give at least two input arguments.');endif nargin<3|isempty(between)  between=0;end% Number of clustersNcluster=max(partition);%Initialize the structStat.internal.sum(1:Ncluster,1)=NaN;Stat.internal.min(1:Ncluster,1)=NaN;Stat.internal.avg(1:Ncluster,1)=NaN;Stat.internal.max(1:Ncluster,1)=NaN;Stat.external.sum(1:Ncluster,1)=NaN;Stat.external.min(1:Ncluster,1)=NaN;Stat.external.avg(1:Ncluster,1)=NaN;Stat.external.max(1:Ncluster,1)=NaN;for cluster=1:Ncluster,  thisPartition=(partition==cluster);  S_=S(thisPartition,thisPartition);  Stat.N(cluster)=size(S_,1);  S_(eye(size(S_))==1)=[];  if ~isempty(S_),    Stat.internal.sum(cluster)=sum(S_);    Stat.internal.min(cluster)=min(S_);    Stat.internal.avg(cluster)=mean(S_);    Stat.internal.max(cluster)=max(S_);  end   if Ncluster>1,    S_=S(thisPartition,~thisPartition);    Stat.external.sum(cluster)=sum(S_(:));    Stat.external.min(cluster)=min(S_(:));    Stat.external.avg(cluster)=mean(S_(:));    Stat.external.max(cluster)=max(S_(:));  endendif between,  Stat.between.min=zeros(Ncluster,Ncluster);  Stat.between.max=zeros(Ncluster,Ncluster);  Stat.between.avg=zeros(Ncluster,Ncluster);  for i=1:Ncluster,    Pi=find(i==partition);    for j=i+1:Ncluster,      Pj=find(j==partition);      d_=S(Pi,Pj);       Stat.between.min(i,j)=min(d_(:));      Stat.between.avg(i,j)=mean(d_(:));		      Stat.between.max(i,j)=max(d_(:));		;		    end  end      Stat.between.min=Stat.between.min+ ...    Stat.between.min';  Stat.between.max=Stat.between.max+ ...      Stat.between.max';  Stat.between.avg=Stat.between.avg+ ...      Stat.between.avg';end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -