动态增量步骤在matlab中定义向量

时间:2016-09-10 13:49:36

标签: matlab vector

我想知道有没有在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作为增量步骤。

1 个答案:

答案 0 :(得分: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