matlab - 创建包含来自另一个数组的连续数字的新矩阵

标签 matlab matrix vectorization

我正在尝试创建一个 n x 5 的矩阵。该矩阵将从另一个包含整数的数组构建。

所有行都将从数字负 4 开始,并以数组中的数字结束。我试图找到一种不使用 for-loop 的有效方法。 为了说明这种情况,我举了一个例子:

b=[6 8 9 11 13 16 17 ];
A=zeros(length(b),5);

使用后我要获取的代码:

A=[2:6;
   4:8;
   5:9;
   9:13;
   12:16;
   13:17];

最佳答案

使用bsxfun@plus@minus 作为 b 上的操作说明符 作为列向量和偏移行向量对于 @plus 说明符,从 -4 到 0,对于 @minus 说明符,从 4 到 0 作为最后一个参数给它。因此,实现看起来像这样 -

bsxfun(@plus,b(:),-4:0)
bsxfun(@minus,b(:),4:-1:0)

sample 运行-

>> b
b =
     6     8     9    11    13    16    17
>> bsxfun(@plus,b(:),-4:0)
ans =
     2     3     4     5     6
     4     5     6     7     8
     5     6     7     8     9
     7     8     9    10    11
     9    10    11    12    13
    12    13    14    15    16
    13    14    15    16    17
>> bsxfun(@minus,b(:),4:-1:0)
ans =
     2     3     4     5     6
     4     5     6     7     8
     5     6     7     8     9
     7     8     9    10    11
     9    10    11    12    13
    12    13    14    15    16
    13    14    15    16    17

关于matlab - 创建包含来自另一个数组的连续数字的新矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33103732/

相关文章:

matlab - 如何知道Matlab中系统命令执行过程中耗时?

python - 将函数应用于 ndarray 的 0 维

vectorization - 向量化获取每个第 n 个元素(但第 n 个元素是可变的)

r - R 中的代码更快

Matlab 探查器文本在 Ubuntu 中未正确呈现

arrays - 如何避免 Matlab 在创建句柄对象数组作为对象属性时占用指数时间

c++ - 存储稀疏矩阵&高效迭代

c++ - 遍历 2D 矩阵的可并行算法,同时了解 col/row-wise 邻域

f# - F#中矩阵计算的改进

matlab - 生成矩阵