2012-11-02 73 views
0

我想分配权重的边缘,使(总和)(权重来到一个节点)和它自己的权重加1。Matlab +图论+特定的权重分配

这里是我的尝试:

clear all; 
    close all; 
    clc; 
    %% building the graph 
    g=graph; 
    for k=1:6 

    add(g,k,k+1) 
    add(g,1,4) 
    add(g,5,7) 
    end 
    %%assigining the statuses 0 and 1 
    %label(g,1,'0'); 
    %label(g,2,'1'); 
    %label(g,3,'1'); 
    %label(g,4,'1'); 
    %label(g,5,'1'); 
    %label(g,6,'0'); 
    %label(g,7,'0'); 
    figure,ldraw(g); 
    %x=rand(1,1); 
    %y=rand(1,1) 
    %% get line info from the figure 
    lineH = findobj(gca, 'type', 'line'); 
    xData = cell2mat(get(lineH, 'xdata')); % get x-data 
    yData = cell2mat(get(lineH, 'ydata')); % get y-data 

    %% if an edge is between (x1,y1)<->(x2,y2), place a label at 
    %%the center of the line, i.e. (x1+x2)/2 (y1+y2)/2 etc 
    labelposx=mean(xData'); 
    labelposy=mean(yData'); 

    %% generate some random weights vectori.e. the probability matrix 
    weights=rand(1,1,length(labelposx)) 

    % plot the weights on top of the figure 
    text(labelposx,labelposy,mat2cell(weights), 'HorizontalAlignment','center',... 
             'BackgroundColor',[.7 .9 .7]); 
    %%Transition matrix or markov matrix 
    % Transition=[0 (1,2) 0 (1,4) 0 0 0; 
    % (2,1) 0 (2,3) 0 0 0 0; 
    % 0 (3,2) 0 (3,4) 0 0 0; 
    % 0 0 (4,3) 0 (4,5) 0 0; 
    % 0 0 0 (5,4) 0 (5,6) (5,7); 
    % 0 0 0 0 (6,5) 0 (6,7); 
    % 0 0 0 0 (7,5) (7,6) 0]; 

    Transition= [0 weights(:,:,8) 0 weights(:,:,6) 0 0 0; 
    weights(:,:,8) 0 weights(:,:,7) 0 0 0 0; 
    0 weights(:,:,7) 0 weights(:,:,5) 0 0 0; 
    weights(:,:,6) 0 weights(:,:,5) 0 weights(:,:,4) 0 0; 
    0 0 0 weights(:,:,4) 0 weights(:,:,3) weights(:,:,2); 
    0 0 0 0 weights(:,:,3) 0 weights(:,:,1); 
    0 0 0 0 weights(:,:,2) weights(:,:,1) 0] 
    %set_matrix 
    %%dij-- Probability matrix 
    sparse(Transition); 
    d=[weights(:,:,8);weights(:,:,7);weights(:,:,5);weights(:,:,4); 
    weights(:,:,3);weights(:,:,1);weights(:,:,1)] 
    %%Si[k]-- matrix of the statuses(labels) 
    %S=[0 1 1 1 1 0 0] 

Graph

对于如:增加权重来节点有四个,再加上其自身的重量应等于1

+1

您生成的权重只是随机的,您是在问如何生成***任意***权重,以便增加到达节点四的权重以及其自身权重应该等于1? – bla

+0

是的!这正是我所要求的......我无法在matlab中做到这一点! – happyme

+0

看到这个讨论:http://stackoverflow.com/questions/8064629/random-numbers-that-add-to-100-matlab – bla

回答