Ну, cumsum
накапливает сумму вектора, но вы запрашиваете специально разработанную матрицу, поэтому сравнение немного проблематично c .... В любом случае, возможно, есть функция для этого если это обычная особая матрица tri angular (мои математические знания здесь ограничены, извините), но мы также можем построить ее довольно легко (и эффективно =)):
N = 10;
r = 2;
% allocate arry
ary = ones(1,N);
% initialize array
ary(2) = r;
for i = 3:N
ary(i) = ary(i-1)*r;
end
% build matrix i.e. copy the array
M = eye(N);
for i = 1:N
M(i,i:end) = ary(1:end-i+1);
end
Это предполагает, что вы хотите иметь матрицу размером N
x N
, а r
- это значение, для которого вы хотите рассчитать мощность.
FIX : предыдущая версия указана в строке 13 M(i,i:end) = ary(i:end);
, но назначение должно начинаться всегда с первой позиции ary