给定一个数字,用MATLAB生成一系列“L”形矩阵

时间:2015-05-04 09:54:32

标签: matlab matrix

给出任何数字。让我们说例如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生成类似于此的矩阵?

2 个答案:

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