matlab - 通过在 MATLAB 中填充当前值来扩展数组

标签 matlab

我有一个相当简单的问题,我只是想知道在 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。

enter image description here

第二:模拟时间与重复因子。 Data 的长度为 10000。

enter image description here

因此您可以根据模拟结果选择最佳的。

关于matlab - 通过在 MATLAB 中填充当前值来扩展数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369159/

相关文章:

algorithm - 修改 Delaunay 三角剖分的有效方法

Matlab strsplit 在非键盘字符处

matlab - 将向量中的唯一值分组并将它们放入矩阵中

java - Spring bean 多次加载

matlab - 加入数字向量的数字

arrays - MATLAB:如何在没有 for 循环的情况下使用一维向量索引对多维矩阵进行子集化?

c++ - 在 matlab 中调用可执行函数,比本地 matlab 代码慢?

matlab - double类型的帧必须在0到1的范围内 : MATLAB

matlab - Matlab中带有非标量下标的Accumarray?

matlab - 如何在 MATLAB 中编写 GUI?