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

标签 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 作为增量步长。

最佳答案

不可以,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

关于matlab - 在matlab中定义向量的动态增量步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39426728/

相关文章:

Matlab:仅在变量不存在时才分配变量?

Matlab错误: Too many output arguments

matlab - 如何沿着数组的某个维度进行操作?

c - 作业——二维空间中3点的叉积

c++ - std::vector<Object> 保留方法是否需要 Object 类的复制构造函数?

matlab - Matlab 级联目标检测器(使用 LBP)对于平面内旋转是否不变?

arrays - Matlab 中的矢量化范围检查

c++ - 排序多维 vector

c++ - 顺时针旋转M*N矩阵90度,C++

多维数组的Java序列化