2015-05-04 141 views

回答

5

我会使用bsxfun

n = 5; 
matrix = bsxfun(@max, 1:n, (1:n).'); 

另一种(可能慢)是使用ndgrid

n = 5; 
[ii, jj] = ndgrid(1:n); 
matrix = max(ii, jj); 
+1

这里最好使用'bsxfun'! – Divakar

+0

非常好:)在发布这个问题之前,我应该努力工作。 –

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 
+1

谢谢你让我知道一个新的功能。 :) –

+0

不错! 'gallery'函数确实可以生成许多不同的矩阵 –