矩阵乘法 MATLAB
Matrix multiplication MATLAB
所以也许我想多了,把它搞得一团糟....
我在 MATLAB 中有一个有向图。我需要将它更改为无向图以使用最小生成树对其进行评估(对吗?它不适用于有向图)。我有一个 nx1 二进制矩阵(1 是唯一的,0 是重复的)表示重复,我的节点-节点-边权重矩阵的形式为 nx3。似乎我的有向边在两个方向上都是相同的,所以将其更改为无向边应该不会有什么不同。
如何使用二进制的列向量将主矩阵中所有三列重复归零,使其只显示无向边?
此外,如果我缺少另一种方法,我会喜欢的!
根据你的例子:
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
(来自 )
out = bsxfun(@times,vect,mat)
对于 MATLAB >= r2016b
(来自 )
out = mat.*vect
所以也许我想多了,把它搞得一团糟....
我在 MATLAB 中有一个有向图。我需要将它更改为无向图以使用最小生成树对其进行评估(对吗?它不适用于有向图)。我有一个 nx1 二进制矩阵(1 是唯一的,0 是重复的)表示重复,我的节点-节点-边权重矩阵的形式为 nx3。似乎我的有向边在两个方向上都是相同的,所以将其更改为无向边应该不会有什么不同。
如何使用二进制的列向量将主矩阵中所有三列重复归零,使其只显示无向边?
此外,如果我缺少另一种方法,我会喜欢的!
根据你的例子:
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
(来自
out = bsxfun(@times,vect,mat)
对于 MATLAB >= r2016b
(来自
out = mat.*vect