我有一个相当简单的问题,我只是想知道在 MATLAB 中是否有一种简单的方法可以做到这一点(即一个函数来做到这一点而不是自己写出循环或其他东西)。
假设我有一个时间序列,其中时间为 1:1:1000
,数据为 2 * (1:1:1000)
,我想扩展数组通过使时间和数据向量更精细。假设我希望时间为 1:0.1:1000
,数据为 2 * (1:0.1:1000)
。有没有一种简单的方法告诉 MATLAB 重复每个向量的值 10
次(从 1/0.1 = 10
),这样我就可以得到这样的东西?:
时间:[1, 2, 3, 4, ...]
数据:[2, 4, 6, 8, ...]
到:
时间:[1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, ...]
数据:[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, ...]
最佳答案
您可以使用 reshape()
和 repmat()
的组合,如下所示:
Data = [2, 4, 6, 8, ...] % As stated in the question.
Data = reshape(repmat(Data, 10, 1), 1, []);
这比其他方法(如 kron()
或 sort()
和 repmat()
的组合)更省时。
做了两次模拟,结果如下图所示。
首先:模拟时间与 Data
的长度。这里我使用 N=100 而不是 10。
第二:模拟时间与重复因子。 Data
的长度为 10000。
因此您可以根据模拟结果选择最佳的。
关于matlab - 通过在 MATLAB 中填充当前值来扩展数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369159/