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

📄 random_walk.m

📁 自己编的一个用随机行走法实现电路计算的例子
💻 M
字号:
clear all;
r(001,002)=1;
r(002,003)=1;
r(3,5)=4;
r(5,7)=1;
r(3,4)=1;
r(4,6)=2;
r=0-r
g=1./r
%g_temp=g<Inf;
%g=g.*g_temp+1;

%g=sparse(g)


m(1)=1;
m(7)=1;
m(6)=1;

flag = (m~=0);

ii=[0,0.1,0.05, 0.3, 0.05, 0,0]
[size_r, size_c]=size(r)
for k=1:max(size_r,size_c)
    sum_g(k) = 0;
    for pp=1:size_r
        for q=1:size_c
            if(((pp==k) || (q==k)) &&( g(pp,q) ~= Inf))
                sum_g(k) = sum_g(k) + g(pp,q);
            end
        end
    end
    m(k)=ii(k)/sum_g(k);
end


m(1)=1;
m(7)=1;
m(6)=1;


for k=1:max(size_r,size_c)
    for pp=1:size_r
        for q=1:size_c
            if(((pp==k) || (q==k)) &&( g(pp,q) ~= Inf))
                 if(pp==k) kk=q;
                 else kk=pp;
                 end
                p(k,kk) = g(pp,q)/sum_g(k);
            end
        end
    end
end


p=sparse(p)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
node = 4;
WALK_TIME = 100;
COUNT_TIME = 100;
ff = 0;
f(node)=m(node);
for count = 1:COUNT_TIME
    
    next_node = node;    
    ff = f(node)+ff;
    f(node)=m(node);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% walk till the end or
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% time up
    for w_time = 1:WALK_TIME
       
        %%%%%%%%%%%%%%%%%%%%
        p_rand = rand;
        p_temp = 0;
        for pp=1:max(size_c,size_r)
            if( p(next_node,pp) > 0 ) 
                p_temp = p_temp + p(next_node,pp);  
                if(( p_rand < p_temp ) || ( p_temp==1))
                    next_node = pp  %%%%%%%%%% search every node, find next node
                    break;
                end
            end
        end
        %%%%%%%%%%%%%%%%%%%

        f(node)= f(node) + m(next_node) 
    
        if(flag(next_node)==1)
            break;
        end

    end
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% walk ends

end


fff(node) = ff/count

⌨️ 快捷键说明

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