Matlab在没有循环的情况下生成新的值数组



在Matlab中,除了一个例子之外,我不知道解释这一点的最佳方法。假设我有一个名为tStart的数组和一个tDuration长度:

tStart = [3,8,15,20,25];
tDuration = 2;

有没有办法得到一个新的阵列,它会是:

[3,4,5,8,9,10,15,16,17,20,21,22,25,26,27]

所以我想要的是使用初始的tStart数组,然后用起始值和下一个对应的tDuration长度值组成一个新的数组。

如果我做[tStart(1:end)+tDuration],我会得到一个结束值的数组,但我如何才能得到开始、结束以及其间的所有值?

如果我[tStart(1:end):tStart(1:end)+tDuration],我会得到一个错误。

如果能在没有循环的情况下提供任何帮助,我们将不胜感激。

我会使用MATLAB的隐式展开、整形和二维数组的排序。

首先,创建一个包含tStart:中所需值的二维数组

tStart = [3,8,15,20,25];
tDuration = 2;
tDurAdd = [0:tDuration].';  % numbers to add to tStart
tArray = tStart + tDurAdd;

这给了我们

tArray =
3    8   15   20   25
4    9   16   21   26
5   10   17   22   27

这些是正确的值,现在我们只需要将它们重塑为一个行向量:

tResult = reshape(tArray, 1, []);

最后的阵列是:

tResult =
3    4    5    8    9   10   15   16   17   20   21   22   25   26   27

当然,这一切都可以在一条线上完成:

tResult = reshape(tStart + [0:tDuration].', 1, []);

相关内容

  • 没有找到相关文章

最新更新