matlab计算加权积
时间: 2023-07-13 14:10:06 浏览: 361
matlab加权pca代码-ariaDNE_code:法线Dirichlet能量的稳健实现算法
假设有向图 $G=(V,E)$,其中 $V$ 表示节点集合,$E$ 表示边集合,每条边 $(i,j)\in E$ 对应一条边权 $w_{i,j}$。对于节点 $i$,其入度集合为 $in(i)$,出度集合为 $out(i)$,则节点 $i$ 的加权积为:
$$
W(i)=\prod_{j\in in(i)}w_{j,i}\prod_{k\in out(i)}w_{i,k}
$$
其中,$\prod$ 表示乘积运算符,$in(i)$ 表示节点 $i$ 的入度集合,$out(i)$ 表示节点 $i$ 的出度集合。可以使用 MATLAB 实现如下:
```matlab
% 假设有向图的邻接矩阵为 adj,边权矩阵为 w
n = size(adj, 1); % 节点数
W = zeros(n, 1); % 存储每个节点的加权积
for i = 1:n
W(i) = prod(w(adj(:, i) ~= 0, i)) * prod(w(i, adj(i, :) ~= 0));
end
```
其中,`adj(:, i) ~= 0` 表示第 $i$ 列不为 $0$ 的逻辑向量,`adj(i, :) ~= 0` 表示第 $i$ 行不为 $0$ 的逻辑向量,`w(adj(:, i) ~= 0, i)` 表示所有入边的边权,`w(i, adj(i, :) ~= 0)` 表示所有出边的边权。
阅读全文