matlab图论分析之指标计算(二)

发布于:2025-03-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

图论分析是一种研究大脑功能网络的有效方法。通过将大脑的不同区域或电极视为节点,区域或电极之间的连接视为边,可以构建脑功能网络,并利用图论工具分析器拓扑特性。图论分析的指标有很多,简单介绍如下:
全局属性:
聚类系数:衡量节点聚集程度;
特征路径长度:衡量信息传递效率;
小世界性:兼具高聚类和短路径的特征;
全局效率:衡量网络信息传递效率;
局部属性:
节点度:节点的连接数;
介数中心性:节点在网络中的枢纽程度;
局部效率:衡量节点局部信息传递效率;

本次分析,主要计算特征路径长度,聚类系数,小世界指数,小世界指数是由特征路径长度和聚类系数计算出来的,我们为了便于计算,首先定义一个smallworldness函数,同时计算出这三个指标,具体实现如下:

function [L,C,sigma] = smallworldness(A,B)
输入A:邻接矩阵(二值图或加权图,都是无向的);B:1为二值图,2为加权图;
输出:L特征路径长度,C为聚类系数,sigma为小世界指数

% 随机时的参数初始化
L_rand = 0;
C_rand = 0;
ITER  = 10; 

% 判断是二值图还是加权图
if B == 1   % 二值图
    L = distance_bin(A);
    L = mean(L(L > 0 & L ~= inf)); % 特征路径计算,排除0和无穷大

    C = clustering_coef_bu(A);  % 聚类系数
    C = mean(C);         % 均值C

    % 随机生成网络
    for i = 1:ITER
        rand = randmio_und(A,10);% 随机网络 ,函数生成与实际网络具有相同的度分布
        D = distance_bin(rand);
        random_L = mean(D(D > 0 & D ~= inf));
        L_rand = L_rand + random_L; % 随机特征路径
        C_rand = C_rand + mean(clustering_coef_bu(rand)); % 聚类系数均值
    end
    L_rand = L_rand/10;
    C_rand = C_rand/10;
    sigma = (C/C_rand)/(L/L_rand);   % 计算小世界指数
else
    L = distance_wei(A);
    L = mean(L(L > 0 & L ~= inf)); % 特征路径计算

    C = clustering_coef_wu(A);  % 聚类系数
    C = mean(C);         % 均值C

    % 随机生成网络
    for i = 1:ITER
        % 随机网络 ,函数生成与实际网络具有相同的度分布
        random_y = A;  % 复制实际网络
        [row,~] = find(triu(A,1));  % 找到实际网络中的边
        numEdges = numel(row);         % 边数    
        weights = A(triu(A,1)>0); % 提取实际网络的权重
        random_weight = weights(randperm(numEdges));  % 随机化权重
        random_y(triu(A,1) > 0) = random_weight; % 更新权重
        random_y = triu(random_y,1) + triu(random_y,1)'; % 对称矩阵

        D = distance_wei(random_y); % 最短路径
        random_L = mean(D(D > 0 & D ~= inf));  % 忽略0或inf
        L_rand = L_rand + random_L; % 随机特征路径
        C_rand = C_rand + mean(clustering_coef_wu(random_y)); % 聚类系数均值

    end
    L_rand = L_rand/ITER;
    C_rand = C_rand/ITER;
    sigma = (C/C_rand)/(L/L_rand);% 计算小世界指数

end
% 

根据(一)中,或者其他方式计算出来的二值矩阵和加权加权,如:binary_matrix二值矩阵,weight_matrix加权矩阵,调用smallworldness函数:

[L_b,C_b,sigma_b] = smallworldness(binary_matrix,1);
[L_w,C_w,sigma_w] = smallworldness(weight_matrix,2);

计算结果如下:

在这里插入图片描述

注意:二值图的随机网络比较容易生成,而加权图的随机网络有些复杂,都需要与实际的网络保持度分布相同。计算方法有多种,选择自己擅长使用的即可。


网站公告

今日签到

点亮在社区的每一天
去签到