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