2015-01-12 47 views
2

x成爲一個向量。我想計算x,x.^2,...,x.^K。有沒有一個功能可以同時完成這一切? (目前,我只使用一個for循環)在MATLAB中計算x,x,^ 2,... x。^ K(冪的向量化,幾何級數)

+0

這三個答案都很好。謝謝您的幫助。 – user103828

+1

你有沒有考慮看Vandermonde矩陣?使用['vander'](http://www.mathworks.com/help/matlab/ref/vander.html)。 MATLAB有這個內置的。 – rayryeng

+0

我不知道這個函數......它似乎並不是我需要的,因爲$ K \ neq $向量的長度。 – user103828

回答

9

您可以使用函數bsxfun計算擴展:

k = 3; 
    x = transpose(1:10); 
    P = bsxfun(@power, x,1:k); 
4

你可以使用meshgrid。

k = 1:10; 
[X, K] = meshgrid(x, k); 
Y = X.^K; %or Y = power(X,K); 
+0

不錯的選擇,但可能禁止更大的向量和'k'的值。 – rayryeng

4

以下可以是在所需的操作方面更有效,因爲用於計算每個X^Ñ它適用乘法,而不是功率,通過重新使用先前計算X ^(Ñ -1):

x = 1:10; %// row vector 
K = 5; %// maximum power 
result = cumprod(repmat(x, K, 1), 1);