2015-05-04 138 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'函數確實可以生成許多不同的矩陣 –