2016-09-10 42 views
2

我想知道有無論如何在matlab中做下面的語句?動態增量步驟在matlab中定義一個向量

10: 2to power(1,2,3):18 

我想創建以下向量和我需要有一種動態增量步驟,其是2的功率(1,2,3)。

a=[10,12,14,18] 

我試圖

10:2.^[1,2,3]:18 

10:2.^[1;2;3]:18 

,但它需要2^1爲增量步驟。

回答

2

不,你不能在MATLAB中有一個動態增量值。

這樣做的MATLAB方法是創建數組2.^[1 2 3]並將其添加到10並將其與10連接以構建您的向量。

a = [10 10 + (2.^[1 2 3])] 

% 10 12 14 18 

如果你想,你可以寫一個函數來創建這些數組。

function out = pow2increment(start_value, end_value) 
    % Figure out how many powers of 2 we need for this range 
    upper_limit = floor(log2(end_value - start_value)); 

    % Construct the array 
    out = [start_value, start_value + 2.^(1:upper_limit)]; 
end 

或者作爲一個匿名函數

pow2increment = @(a,b)[a, a + 2.^(1:floor(log2(b - a)))]; 

pow2increment(10, 18) 

% 10 12 14 18 
+0

謝謝您的回答。絕對有更簡單的方法來創建這個向量。我想知道在matlab中是否有類似的東西。 – user6276336

+0

@ user6276336更新更加明確。沒有辦法,但我提供了兩種可以爲您創建這些類型的功能。 – Suever