Если вы напишите edit polyfit
, вы увидите, как в MATLAB реализована команда polyfit
, которая похожа на то, что вы пытаетесь сделать.Там вы найдете код
% Construct the Vandermonde matrix V = [x.^n ... x.^2 x ones(size(x))]
V(:,n+1) = ones(length(x),1,class(x));
for j = n:-1:1
V(:,j) = x.*V(:,j+1);
end
, который создает интересующую вас матрицу. Преимущество этого метода перед bsxfun
состоит в том, что вы вычисляете только x(:).^n
, а затем сохраняете промежуточные результаты.Вместо того, чтобы рассматривать все полномочия как отдельные проблемы, например, x(:)^(n-1)
как отдельную проблему для x(:).^n
.