2012-11-02 92 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

回答