我想生成一个矩阵,其中 i,j 元素等于 i*j,其中 i != j。
e.g.
0 2 3
2 0 6
3 6 0
到目前为止,我已经发现我可以使用这个索引矩阵访问非对角线元素
idx = 1 - eye(3)
但我还没有弄清楚如何将矩阵单元的索引合并到计算中。
我正在考虑一般情况(矩阵不一定是正方形)。让
m = 4; %// number of rows
n = 3; %// number of columns
有很多方法:
-
Using ndgrid
:
[ii jj] = ndgrid(1:m,1:n);
result = (ii.*jj).*(ii~=jj);
-
Using bsxfun
:
result = bsxfun(@times, (1:m).',1:n) .* bsxfun(@ne, (1:m).',1:n);
-
Using repmat
and cumsum
:
result = cumsum(repmat(1:n,m,1));
result(1:m+1:m^2) = 0;
-
使用矩阵乘法(由@GastónBengolea添加):
result = (1:m).'*(1:n).*~eye(m,n);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)