2017-04-23 76 views

回答

3

您可以利用singleton expansion,使用bsxfun

A = bsxfun(@power, (1:n).', (1:m)); 

在最近的Matlab的版本(R2016b起),由於隱性單擴展,你可以跳過bsxfun和直接寫

A = (1:n).'.^(1:m); 

或者,對於更易讀易用的初學者版本,您可以使用明確製作兩個相同大小的矩陣10,然後應用.^element-wise power):

[ii, jj] = ndgrid(1:n, 1:m); 
A = ii.^jj; 

另一種方法是使用cumprod通過反覆乘更換電源:

A = cumprod(repmat((1:n).', 1, m), 2); 
+1

非常感謝! –

+0

你知道如何實施: ** A_ {i,j} = 1,如果i = j + 1或i = j-1(0,否則)** 我可以用'bsxfun @eq'? –

+0

你可以用'bsxfun(@minus,...)'來實現,我想你想要的是'abs(bsxfun(@minus,(1:n)。',(1:m)) )== 1',檢查'diag'函數 –