在matlab中如何构建加权邻接矩阵,在MATLAB中构造邻接矩阵

本文介绍了如何在MATLAB中利用DIAG函数或SPDIAGS函数创建加权邻接矩阵,特别是对于4连接和8连接的邻居情况。通过示例展示了如何构建对称的邻接矩阵,适用于图论和网络分析中的数据表示。
摘要由CSDN通过智能技术生成

如果你注意到,你创建的邻接矩阵有一个不同的模式。具体来说,它们是对称的和

banded.你可以利用这个事实,使用

DIAG函数(或

SPDIAGS函数,如果你想做一个稀疏矩阵)轻松创建你的矩阵。下面是如何为每种情况创建邻接矩阵,使用上面的示例矩阵作为示例:

4连接的邻居

mat = [1 2 3; 4 5 6; 7 8 9]; %# Sample matrix

[r,c] = size(mat); %# Get the matrix size

diagVec1 = repmat([ones(c-1,1); 0],r,1); %# Make the first diagonal vector

%# (for horizontal connections)

diagVec1 = diagVec1(1:end-1); %# Remove the last value

diagVec2 = ones(c*(r-1),1); %# Make the second diagonal vector

%# (for vertical connections)

adj = diag(diagVec1,1)+... %# Add the diagonals to a zero matrix

diag(diagVec2,c);

adj = adj+adj.'; %'# Add the matrix to a transposed

%# copy of itself to make it

%# symmetric

你会得到以下矩阵:

adj =

0 1 0 1 0 0 0 0 0

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值