matlab图论分析之网络构建

embedded/2025/3/1 14:34:20/

在网络构建中,二值化和加权网络的处理是两个关键步骤:

二值化:是将加权网络转换为二值网络,也就是只有0或1,同时保留网络的关键拓扑特性。通常设定一个阈值也即是网络密度,保留权重高于阈值的边,删除权重低于阈值的边;
网络密度:是指网络中实际存在的边数与可能存在的最大边数之比。如目标密度为20%,这意味着在二值化过程中,需要保留一定比例的边,使得最终网络的密度在这个范围内;
小世界属性验证:小世界网络具有较短的平均路径长度和较高的聚类系数。在二值化后,需要验证网络是否仍然具有小世界属性;

加权图网路:保留原始权重信息,不进行二值化处理。加权网络能够更准确地反映节点之间地连接强度。

% clc;clear;close all;
% 加载预处理后的数据
a = load('EEGdata.mat');
data = a.EEG.data;   % 59通道数据% 计算皮尔逊相关性,衡量通道之间的线性相关性
% 也可以用其他的计算,如 PLV 等 
data1 = data';
correlation_matrix = corr(data1); % 将相关性矩阵转换为权重矩阵(取绝对值)
A = abs(correlation_matrix);
A = A - diag(diag(A));   % 去除自环(对角线设为0N = size(A,1);   %通道数% 网络构建
density = 0.2;  % 目标密度为20%
max_edges = N*(N-1)/2;  % 最大边数% 
retain_edges = round(2*density*max_edges); % 需要保留的边数% 
% 获取所有变得权重并排序% 
weights = nonzeros(A);  %获取所有非零权重
sorted_weights = sort(weights,'descend'); % 按权重降序% 
% 设定阈值
threshold = sorted_weights(retain_edges);  % 保留前retain_edges条边
binary_matrix = A > threshold; % 保留≥阈值的边
G_binary = graph(binary_matrix,'upper','omitselfloops'); % 创建二值化网络% 验证网络密度
num_nodes = size(binary_matrix, 1);
num_edges = nnz(binary_matrix) / 2;  % 无向网络的边数
max_edges = num_nodes * (num_nodes - 1) / 2;  % 最大可能边数
actual_density = num_edges / max_edges;
% 输出实际密度
fprintf('实际网络密度: %.4f\n', actual_density);figure;
imagesc(binary_matrix);
title('相关性连接矩阵');
xlabel('通道');
ylabel('通道');

结果如下:
在这里插入图片描述
二值连接矩阵
在这里插入图片描述

二值化网络构建另一种方法:

density = 0.20;
% 计算阈值
thres = quantile(A(:),1 - density);  % 找到数据集中指定分位数的值
% 二值化矩阵
binary_matrix = A > thres;  % 网络密度大于20%
G_binary = graph(binary_matrix,'upper','omitselfloops'); % 创建二值化图% % 验证网络密度
num_nodes = size(binary_matrix, 1);
num_edges = nnz(binary_matrix) / 2;  % 无向网络的边数
max_edges = num_nodes * (num_nodes - 1) / 2;  % 最大可能边数
actual_density = num_edges / max_edges;
% 输出实际密度
fprintf('实际网络密度: %.4f\n', actual_density);% %% 画图
figure;
imagesc(binary_matrix);
title('相关性连接矩阵');
xlabel('通道');
ylabel('通道');

在这里插入图片描述
在这里插入图片描述

小世界属性验证
% 特征路径长度
shortest_paths = distances(G_binary); % 计算最短路径
characteristic_path_length = mean(shortest_paths(shortest_paths > 0 & shortest_paths ~=inf),'all'); % 忽略无穷大
% 也可这样计算
% d = distance_bin(binary_matrix);  
% d = d(d > 0 & d ~= inf);
% L = mean(d); % 特征路径% 聚类系数
clustering_coefficient = clustering_coef_bu(binary_matrix);  % 计算聚类系数
mean_clustering_coefficient = mean(clustering_coefficient);
% 小世界指数
% 生成随机网络
random_network = rand(N, N) < density; % 随机网络
random_network = triu(random_network, 1); % 上三角矩阵
random_network = random_network + random_network'; % 对称化% 计算随机网络的特征路径长度和聚类系数
random_shortest_paths = distances(graph(random_network));
random_characteristic_path_length = mean(random_shortest_paths(random_shortest_paths > 0 & random_shortest_paths ~= inf),'all');
random_clustering_coefficient = mean(clustering_coef_bu(random_network));% 计算小世界指数
small_world_index = (mean_clustering_coefficient/random_clustering_coefficient)/...(characteristic_path_length/random_characteristic_path_length);% 计算数据
results_table = table(characteristic_path_length,mean_clustering_coefficient,small_world_index,...'VariableNames',{'CharacteristicPathLength','ClusteringCoefficient','SmallWorldIndex'});
disp(results_table);
filename = 'network_results.xlsx';
writetable(results_table,filename);

在这里插入图片描述

注:特征路径长度,聚类系数,随机网络等,有很多方法计算,选择一种即可;
这里面用到了工具包BCT,需要提前加载。每个函数的调用,要仔细检查一下,以免出错。


http://www.ppmy.cn/embedded/169078.html

相关文章

【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II

[【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II] 题目 查看提交统计提问 总时间限制: 2000ms 内存限制: 65536kB 描述 The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at di…

2步本地安装部署国产之光大模型DeepSeek,附Mac安装教程和安装包!

轻松两步本地运行国产大模型DeepSeek&#xff0c;附Windows与Mac教程及安装包&#xff01; 在短短一夜之间&#xff0c;DeepSeek-R1&#xff0c;中国的AI大模型&#xff0c;以惊人的速度崛起&#xff0c;引发了全球科技界的广泛关注。英伟达AI科学家Jim Fan也对此表示惊讶&…

C++番外篇——红黑树模拟实现set与map

问题探究 我们知道&#xff1a;set是K模型&#xff0c;KeyValue&#xff0c;所以如果用红黑树实现set&#xff0c;那么红黑树的每个节点直接存储一个值即可&#xff1a; struct RBTreeNode_set {RBTreeNode_set* _left;//节点的左孩子RBTreeNode_set* _right;//节点的右孩子R…

Java中使用FFmpeg拉取RTSP流

在Java中使用FFmpeg拉取RTSP流并推送到另一个目标地址是一个相对复杂的任务&#xff0c;因为Java本身并没有直接处理视频流的功能。但是&#xff0c;我们可以借助FFmpeg命令行工具来实现这个功能。FFmpeg是一个非常强大的多媒体处理工具&#xff0c;能够处理音频、视频以及其他…

AI关于SHAP分析与列线图(算法)解释线性模型矛盾之处的解释

AI关于SHAP分析与列线图&#xff08;算法&#xff09;解释线性模型矛盾之处的解释 两种解释方法在个案的局部解释方面&#xff0c;有矛盾之处&#xff0c;其背后的原理已经超出了我的知识范畴&#xff0c;以下是询问AI的几个问题&#xff0c;希望能从中梳理出一个合理的解释。…

广州4399游戏25届春招游戏策划管培生内推

【热招岗位】 游戏策划管培生、产品培训生、游戏文案策划、游戏数值策划、游戏系统策划、游戏产品运营、游戏战斗策划、游戏关卡策划 【其他岗位】产品类&#xff08;产品培训生、产品运营等&#xff09;、技术类&#xff08;开发、测试、算法、运维等&#xff09;、运营市场类…

图书数据采集:使用Python爬虫获取书籍详细信息

文章目录 一、准备工作1.1 环境搭建1.2 确定目标网站1.3 分析目标网站二、采集豆瓣读书网站三、处理动态加载的内容四、批量抓取多本书籍信息五、反爬虫策略与应对方法六、数据存储与管理七、总结在数字化时代,图书信息的管理和获取变得尤为重要。通过编写Python爬虫,可以从各…

《AI强化学习:元应用中用户行为引导的智能引擎》

在科技飞速发展的当下&#xff0c;元应用正以前所未有的速度融入我们的生活&#xff0c;从沉浸式的虚拟社交到高度仿真的工作模拟&#xff0c;元应用构建出一个个丰富多彩的虚拟世界。而在这背后&#xff0c;人工智能的强化学习技术宛如一位无形却强大的幕后推手&#xff0c;深…