如何在MATLAB中创建此矩阵

时间:2016-11-13 11:33:58

标签: matlab matrix

我有一个载体,如

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的最大值。

1 个答案:

答案 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