我有一个载体,如
A=[4;3;1;6]
我想用A
B=[6 5 4 3 2 1;4 3 2 1 0 0;3 2 1 0 0 0;1 0 0 0 0 0];
我怎样才能在MATLAB中做到这一点?列数等于A的最大值。
答案 0 :(得分:1)
这有两种方法:一种是矢量化的,一种是循环的。
A=[4;3;1;6];
B = max(bsxfun(@minus, sort(A, 'descend'), 0:(max(A)-1)), 0);
或
S = sort(A, 'descend');
m = numel(A); n = S(1);
C = zeros(m,n);
for k = 1:m
C(k,1:S(k)) = S(k):-1:1;
end
结果:
B =
6 5 4 3 2 1
4 3 2 1 0 0
3 2 1 0 0 0
1 0 0 0 0 0