Sie können singleton expansion ausnutzen, indem bsxfun
:
A = bsxfun(@power, (1:n).', (1:m));
In den letzten Matlab Versionen (R2016b an), dank implizite Singleton Erweiterung können Sie bsxfun
überspringen und direkt schreiben
A = (1:n).'.^(1:m);
Oder, für eine leichter lesbare, anfängerfreundliche Version, können Sie zwei Matrizen derselben Größe mitexplizit erstellen 10 und dann gelten .^
(element-wise power):
[ii, jj] = ndgrid(1:n, 1:m);
A = ii.^jj;
Noch ein anderer Ansatz Leistung durch wiederholte Multiplikation mit cumprod
zu ersetzen ist:
A = cumprod(repmat((1:n).', 1, m), 2);
Vielen Dank !! –
Wissen Sie, wie Sie dies implementieren: ** A_ {i, j} = 1, Wenn i = j + 1 oder i = j-1 (0, sonst) ** kann ich dies tun mit 'bsxfun (@eq '? –
Du kannst es mit' bsxfun (@minus, ...) 'machen. Ich denke was du willst ist 'abs (bsxfun (@minus, (1: n).', (1: m))) == 1' Überprüfen Sie auch die Funktion 'diag' –