Up-/Downsampling 逻辑向量(不带零)

Up-/Downsampling of a logical vector (not with zeros)

我希望你能帮助解决我遇到的一个小问题。 我想对带有零和一的向量进行上采样和下采样。我们有函数 upsample 和 downsample 为此,但是,Matlab 中的 upsample 函数只向向量添加零。我想重复这个值,而不是只输入零。

遗憾的是,上采样函数无法做到这一点。因此,我尝试使用 repmat(在三维中),然后重塑以恢复到旧格式。我知道这些函数一定是可行的,但如果我只是简单地使用它们,向量就会被复制并添加到最后。

一个例子: 输入向量是:[1 0 0 1 0 1 0 1 1 1 0 0](这些应该是随机的)。

现在我想上采样(比如)2 倍。然后我想得到: [1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0].

在此先感谢您的帮助!

您可以使用 repelem:

>> repelem([1 0 1],2)
ans =
     1     1     0     0     1     1

或者当 input 是列向量时使用 repmatreshape

>> input = [1 0 1];
>> reshape(repmat(input, 2, 1), 1, [])
ans =
     1     1     0     0     1     1