矩阵乘法MATLAB
所以也许我想得太多了,把事情搞得一团糟 我在MATLAB中有一个有向图。我需要将其更改为无向图,以使用最小生成树对其求值(对吗?它在有向图上不起作用)。我有一个表示重复的二进制文件的nx1矩阵(1是唯一的,0是重复的),我的节点EdgeWight矩阵的形式是nx3。看起来我的定向边在两个方向上都是相同的,所以将其更改为无向应该不会有什么区别 如何使用二进制文件的列向量将主矩阵中的所有三列重复项归零,使其只显示无向边 另外,如果我还缺少另一种方法,我会喜欢的 根据您的示例:矩阵乘法MATLAB,matlab,graph,digraphs,Matlab,Graph,Digraphs,所以也许我想得太多了,把事情搞得一团糟 我在MATLAB中有一个有向图。我需要将其更改为无向图,以使用最小生成树对其求值(对吗?它在有向图上不起作用)。我有一个表示重复的二进制文件的nx1矩阵(1是唯一的,0是重复的),我的节点EdgeWight矩阵的形式是nx3。看起来我的定向边在两个方向上都是相同的,所以将其更改为无向应该不会有什么区别 如何使用二进制文件的列向量将主矩阵中的所有三列重复项归零,使其只显示无向边 另外,如果我还缺少另一种方法,我会喜欢的 根据您的示例: vect = [1;0
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
(来自)
对于MATLAB>=r2016b
(来自)
从你的例子来看:
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
(来自)
对于MATLAB>=r2016b
(来自)
你能提供一个你想要得到的最简单的例子吗?对不起,我在上班的时候打电话。但是这里有一个想法:[1;0;1]×[3 3 2;5 4 1;8 2 2]会给我[3 2;0 0;8 2 2],所以你只是在寻找
x.*y
还是x.*y
?(其中。*
表示元素的乘法)您能提供一个简单的示例来说明您试图获得的结果吗?对不起,我正在用手机工作。但是这里有一个想法:[1;0;1]×[3 3 2;5 4 1;8 2 2]会给我[3 2;0 0;8 2 2],所以你只是在寻找x.*y
还是x.*y
?(其中,*
表示元素的乘法)而不是repmat
,更喜欢bsxfun
:bsxfun(@times,vect,mat)
。在较新版本的MATLAB中,以及在倍频程中,您只需执行vect.*mat
,就可以隐式扩展单态维度。我不知道这一点。阅读,这对于版本>=2016b是正确的。我总是忘记哪些版本引入了新功能,所以我只说“更新的版本”,并试图摆脱它pin代替repmat
,首选bsxfun
:bsxfun(@times,vect,mat)
。在较新版本的MATLAB中,以及在倍频程中,您只需执行vect.*mat
,就可以隐式扩展单态维度。我不知道这一点。阅读,这对于版本>=2016b是正确的。我总是忘记哪些版本引入了新功能,所以我只说“更新的版本”,并试图摆脱它P