思路是,按照现有的写法,推倒重来。

办法是,另设一个数组,用来存储b数组和a数组的对应关系。上篇说的那个c1问题,已经不存在了。不过整个儿的还是有问题。第一篇里面提出的要点未能如数解决。程序如下。

m=2; %用m-2记录累积人数;

b={}; %邻接矩阵

c={}; %一维作者列表

d={}; %存放c数组与a数组的对应关系

for i=1:97;

for j=1:6;

    if ~isnan(a{i,j})

        c{m-1}=a{i,j};                     %将a数组的内容读入c数组,包括重复

        if m>2

            for c1=1:m-2

                if strcmpi(c{m-1},c{c1})   %若出现重复,则删除新读入的c{c1};

                    c{m-1}=[];

                end

            end

        end            

        d{m-1}={m-1,i,j};

        b{1,m}=c{m-1};                     %搭建邻接矩阵的框架

        b{m,1}=c{m-1};

        if ~isnan(c{m-1})

            m=m+1;        

        end

    end

end

end

for d1=1:m-3 %给邻接矩阵赋值

for d2=d1+1:m-2

    b{d2,d2}=0;

    if d{d1}{2}==d{d2}{2}

        b{d{d1}{1}+1,d{d2}{1}+1}=1;

        b{d{d2}{1}+1,d{d1}{1}+1}=1; 

    end        

end

end

这个程序的问题在于,虽然b数组是去除了重复了,虽然只出现一次的那些作者之间的联系正确了,但是多次出现的作者和其他人之间的联系,却被弄丢了。还得在d数组上动脑筋修改。先存在这里。早上8:30到晚上18:30不能上网,讨厌的,竟然今天才知道,更讨厌。