在 MATLAB 中计算 x, x.^2,...x.^K(幂向量化,几何级数)
Calculating x, x.^2,...x.^K (vectorization of powers,geometric series) in MATLAB
设x
为向量。我想计算 x
、x.^2
、...、x.^K
。是否有一个功能可以同时执行所有这些操作? (目前我只使用 for
循环)
您可以使用函数bsxfun
来计算展开:
k = 3;
x = transpose(1:10);
P = bsxfun(@power, x,1:k);
你可以使用 meshgrid。
k = 1:10;
[X, K] = meshgrid(x, k);
Y = X.^K; %or Y = power(X,K);
以下在所需操作方面可能更有效,因为计算每个 x^n 它应用乘法而不是幂,通过重用先前计算的 x^(n-1):
x = 1:10; %// row vector
K = 5; %// maximum power
result = cumprod(repmat(x, K, 1), 1);
设x
为向量。我想计算 x
、x.^2
、...、x.^K
。是否有一个功能可以同时执行所有这些操作? (目前我只使用 for
循环)
您可以使用函数bsxfun
来计算展开:
k = 3;
x = transpose(1:10);
P = bsxfun(@power, x,1:k);
你可以使用 meshgrid。
k = 1:10;
[X, K] = meshgrid(x, k);
Y = X.^K; %or Y = power(X,K);
以下在所需操作方面可能更有效,因为计算每个 x^n 它应用乘法而不是幂,通过重用先前计算的 x^(n-1):
x = 1:10; %// row vector
K = 5; %// maximum power
result = cumprod(repmat(x, K, 1), 1);