如何在MATLAB中创建该矩阵

如何在MATLAB中创建该矩阵,matlab,matrix,Matlab,Matrix,我有一个向量,比如 A=[4;3;1;6] 我想用a B=[654321;432100;321000;10000] 如何在MATLAB中实现这一点?列数等于A的最大值。这里有两种方法:一种是矢量化,另一种是循环 A=[4;3;1;6]; B = max(bsxfun(@minus, sort(A, 'descend'), 0:(max(A)-1)), 0); 或 结果: B = 6 5 4 3 2 1 4 3 2 1 0 0 3

我有一个向量,比如

A=[4;3;1;6]

我想用
a

B=[654321;432100;321000;10000]


如何在MATLAB中实现这一点?列数等于A的最大值。

这里有两种方法:一种是矢量化,另一种是循环

A=[4;3;1;6];
B = max(bsxfun(@minus, sort(A, 'descend'), 0:(max(A)-1)), 0);

结果:

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

问题还不清楚。是B存储A中元素的索引(因为A只有4个元素,而maltab中没有0索引)。我不清楚你希望得到的A和B之间的关系。循环有什么问题?循环是非常有用的东西。在这种情况下,循环可能是最合乎逻辑的使用方式。您希望列数为固定值,还是等于
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