Супер-подробный способ сделать это одной строкой:
B= cell2mat(cellfun(@mpower,mat2cell(repmat(A,n,1),[ones(n,1)*size(A,1)],size(A,2)),mat2cell([1:n]',ones(n,1),1),'UniformOutput',false))
Однако я думаю, что для l oop (с предварительным выделением), вероятно, быстрее и намного, намного понятнее. A для l oop не будет «неуместным», если его ясно. Четкость должна быть вашей целью, если только ее скорость не является сверхкритической (и опять же, этот однострочник по-прежнему делает петли под капотом).
Я уверен, что кто-то придумает более четкий однострочник, но мой комментарии по-прежнему будут применяться.
PD: Маг @LuisMendo предлагает: B=cell2mat(arrayfun(@(k){A^k},1:n).')
как гораздо более чистый вариант. (Внутри все еще петли)