我想(在這種情況下n=5
)生成大小(n(n-1)/2, n)
,看起來像這樣的矩陣:如何生成此矩陣(僅包含0和±1)?
-1 1 0 0 0
-1 0 1 0 0
-1 0 0 1 0
-1 0 0 0 1
0 -1 1 0 0
0 -1 0 1 0
0 -1 0 0 1
0 0 -1 1 0
0 0 -1 0 1
0 0 0 -1 1
這就是我,很快,想出了:
G = [];
for i = 1:n-1;
for j = i+1:n
v = sparse(1,i,-1,1,n);
w = sparse(1,j,1,1,n);
vw = v+w;
G = [G; vw];
end
end
G = full(G);
它的工作原理,但是有沒有更快/更乾淨的方法呢?
解決。 Thx,這很好。 – lesspritfree 2014-12-14 09:58:35
@lesspritfree很高興:-)在最後兩行中,您還可以使用['sub2ind'](http://es.mathworks.com/help/matlab/ref/sub2ind.html)而不是總和 – 2014-12-14 12:24:54
哇。這是一個真正的matlab'ed思想!十分優雅。 – Mikhail 2014-12-15 15:05:57