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

📄 similaritygraph.m

📁 一个经典的ICA算法的程序包
💻 M
字号:
function h=similaritygraph(coord,S,lim,lcolor)%function h=similaritygraph(coord,[S],[lim],[lcolor])%%PURPOSE%%To visualize a weighted graph% %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.] %% coord    (Mx2 matrix) coordinates% [S]      (MxM matrix) similarity matrix: if this not given, no edges%            are drawn, only vertices (black dots).% [lim]     (vector) 1xK of monotonically increasing values between%            0 and 1 sets limits for line colors: default [0.5 0.7 0.9]% [lcolor] (Kx3 matrix) of RGB colors that define line colors%            for each interval ]lim(1),lim(2)], ]lim(2),lim(3)],%            ..., ]lim(end-1),lim(end)]  default: shades of red%%OUTPUT%% h         (struct) various graphic handles and other info %             (see details)%%DETAILS%%Draws a weighted graph where the black points are vertices and%the red shaded lines between them are edges. The level is%determined by dividing values of S (the weights) into bins between the% <= lim(1)                 not drawn % ]lim(1),lim(2)]           colormap(1,:)    default: light red%  ...                        ...               ...% ]lim(end-1),lim(end)]     colormap(end,:)  default: bright red % >lim(2)                   not drawn%%NOTE The function always adds to a plot (turns 'hold on' temporarily).%%Output is a structure of handles to graphic objects etc%% h.graph   (vector) graphic handles to all edges (lines)% h.vertex  (vector) graphic handles to all vertices (markers)% h.example (vector) contains one example (graphic handle) of each%             different line type (gray level); needed for legend % h.text    (cell array of strings) contains labels for lines in h.example%             legend(h.example,h.text) sets a proper legend for the%             graph line colors%%If there are no values in ith bin, the shade is left out, and%h.graph(i)=[], h.example(i)=NaN, and h.text(i)='' will be set.%%USED IN% icassoGraph%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.isHold=ishold;hold on;if nargin<3|isempty(lim),  lim=[.5 .75 .9 1];endif nargin<2,  S=zeros(size(coord,1));endlim=lim(:)';if any(diff(lim)<=0),  error('Limits must be monotonically increasing');endh.edge=[];h.vertex=[];h.example=[];h.text=[];% Change this to alter vertex color and line attrib. and line color% scaleMARKERSIZE=3;MARKERCOLOR=[0 0 0];LINEWIDTH=1;Nclass=length(lim)-1;N=size(S,1);if all(S(:)<lim(1)),  isLines=0;else  isLines=1;endif isLines,  if nargin<4|isempty(lcolor)    lcolor=redscale(Nclass+1);    lcolor=redscale(Nclass+1,0.9);    lcolor(1:end-1,:)=lcolor(2:end,:);  elseif size(lcolor,1)~=Nclass,    error('Wrong number of colors.');  end    for i=1:Nclass,     S_=S;    S_(S_<=lim(i) | S_>lim(i+1))=0;     links(:,:,i)=S_;    hold on;    [dummy,dummy,hd]=som_grid(S_,[N 1],'coord',coord,'marker','none', ...			      'linecolor',lcolor(i,:),'linewidth',i.*LINEWIDTH);    if ~isempty(hd),      h.example(i)=hd(1); h.edge{i}=hd;      h.text{i}=[sprintf('%0.2f',lim(i)) '<s_{ij}\leq ' sprintf('%0.2f',lim(i+1))];     else      % No lines in this slot      h.example(i)=NaN; h.edge{i}=[];      h.text{i}='';    end  end    [dummy,h.vertex]=som_grid(S_,[N 1],'coord',coord,'marker','o','line','none',...			    'markercolor',MARKERCOLOR,'markersize',MARKERSIZE);else    [dummy,h.vertex]=som_grid('rect',[N 1],'coord',coord,'marker','o','line','none',...			    'markercolor',MARKERCOLOR,'markersize', ...			    MARKERSIZE);   h.edge=[];   h.example=h.vertex(1);   lim=[];   h.text{1}='all s_{ij} below threshold: no lines shown';endif length(MARKERSIZE)==N,  set(h.node,'markerfacecolor','none');endif ~isHold,  hold off;endif nargout==0,  clear h;end

⌨️ 快捷键说明

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