给出任何数字。让我们说例如5
,我需要生成一个类似于此的矩阵:
1 2 3 4 5
2 2 3 4 5
3 3 3 4 5
4 4 4 4 5
5 5 5 5 5
如何使用Matlab生成类似于此的矩阵?
答案 0 :(得分:5)
我使用bsxfun
:
n = 5;
matrix = bsxfun(@max, 1:n, (1:n).');
替代方案(可能更慢)是使用ndgrid
:
n = 5;
[ii, jj] = ndgrid(1:n);
matrix = max(ii, jj);
答案 1 :(得分:2)
没有什么能超越bsxfun
as used by Luis Mendo。但是为了提醒人们Matlab的gallery
功能的存在,这里有另一种方法:
n = 5;
A = gallery('minij',n)
B = n + 1 - A(end:-1:1,end:-1:1)
A =
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
1 2 3 4 5
B =
1 2 3 4 5
2 2 3 4 5
3 3 3 4 5
4 4 4 4 5
5 5 5 5 5