可以使用循环:
w = [0.1, 0.1, 0.1, 0.1, 0.1];
n = length(w);
adj = [0.05*ones(n-1,1), -0.05*eye(length(w)-1)];
wg = bsxfun(@plus, w, adj);
for c = 2:n
adj(:,[c-1, c]) = adj(:,[c, c-1]);
wg = [wg; bsxfun(@plus, w, adj)];
end
这导致
wg =
0.150000 0.050000 0.100000 0.100000 0.100000
0.150000 0.100000 0.050000 0.100000 0.100000
0.150000 0.100000 0.100000 0.050000 0.100000
0.150000 0.100000 0.100000 0.100000 0.050000
0.050000 0.150000 0.100000 0.100000 0.100000
0.100000 0.150000 0.050000 0.100000 0.100000
0.100000 0.150000 0.100000 0.050000 0.100000
0.100000 0.150000 0.100000 0.100000 0.050000
0.100000 0.050000 0.150000 0.100000 0.100000
0.050000 0.100000 0.150000 0.100000 0.100000
0.100000 0.100000 0.150000 0.050000 0.100000
0.100000 0.100000 0.150000 0.100000 0.050000
0.100000 0.050000 0.100000 0.150000 0.100000
0.100000 0.100000 0.050000 0.150000 0.100000
0.050000 0.100000 0.100000 0.150000 0.100000
0.100000 0.100000 0.100000 0.150000 0.050000
0.100000 0.050000 0.100000 0.100000 0.150000
0.100000 0.100000 0.050000 0.100000 0.150000
0.100000 0.100000 0.100000 0.050000 0.150000
0.050000 0.100000 0.100000 0.100000 0.150000
这就是我认为你所追求的。没有循环也可能是可能的,但我相信这就足够了。