0

所以也许我想多了,把它弄得一团糟......

我在 MATLAB 中有一个有向图。我需要将其更改为无向图以使用最小生成树对其进行评估(对吗?它不适用于有向图)。我有一个表示重复的 nx1 二进制矩阵(1 是唯一的,0 是重复的),我的 node-node-edgeweight 矩阵的形式是 nx3. 似乎我的有向边在两个方向上都是相同的,因此将其更改为无向边应该不会有什么不同。

如何使用二进制的列向量将主矩阵中的所有三列重复归零,这样它只会显示无向边?

另外,如果我缺少另一种方法,我会喜欢的!

4

1 回答 1

2

从你的例子:

vect = [1;0;1]; % n x 1
mat  = [3 3 2; 5 4 1; 8 2 2]; % n x p

第一个想法

out = repmat(vect,1,size(mat,2)).*mat; 

第二个想法

out = mat;
out(find(~vect),:) = 0;

对于 MATLAB >= r2007a

(来自Chris Luengo 评论

out = bsxfun(@times,vect,mat)

对于 MATLAB >= r2016b

(来自Chris Luengo 评论

out = mat.*vect
于 2018-03-21T16:36:00.527 回答