www.pudn.com > consensus.zip > consensus.m, change:2016-04-10,size:1114b


%============== 
%2016.4.2 
%=============== 
function consensus 
clc 
clear 
%%begin 
N=input('请输入N的值:'); 
a=cell(N,N);%创建一个空的N*N矩阵 
X=cell(1,N); 
Y=cell(1,N); 
d=cell(1,N); 
B=round(rand(N,N));%由rand函数产生随机数并四舍五入 
A=tril(B,-1)+triu(B',0);%产生N*N对称矩阵 
L=diag(sum(A,2))-A;%L=D-A 
eig(L);%求L的全部特征值 
 
for i=1:N 
    X{1,i}=i; 
    Y{1,i}=0; 
end 
 
for I=1:N 
    d{1,I}=[]; 
end 
 
T0=0; 
n=[]; 
 
for k=1:1:1200 
    for j=1:N 
        b=0; 
        for m=1:N 
            b=b+A(j,m)*(Y{1,m}-Y{1,j});%公式(2)累加 
        end 
        x(j)=X{1,j}+0.0075*b;%公式(1) 
        y(j)=Y{1,j}+g(k-1)*q((1/g(k-1))*(x(j)-Y{1,j}));%公式(3) 
        d{1,j}=[d{1,j};x(j)]; 
        X{1,j}=x(j); 
    end 
    for o=1:N 
        Y{1,o}=y(o); 
    end 
    T=T0+1; 
    n=[n,T]; 
    T0=T; 
end 
 
for i=1:N 
    plot(n,d{1,i},'color',[rand rand rand]) 
    hold on 
end 
xlabel('Time[step]') 
ylabel('X(t)') 
 
function [w]=g(t) 
W=0.9947; 
w=7*W^t; 
end %尺度函数 
 
function [z]=q(c) 
if -0.5<c&&c<0.5 
    z=0; 
elseif c<=-0.5 
    z=-1; 
else 
    z=1; 
end %一位量化器 
end 
end