gpt4 book ai didi

arrays - Matlab 重采样向量

转载 作者:行者123 更新时间:2023-12-02 06:57:11 25 4
gpt4 key购买 nike

我目前正在尝试找到一种对向量重新采样的方法。因此,例如,如果我有一个大小为 4 的向量 [1 3 5 7] 并且我想将其缩小到大小 3,它会给我 [1 4 8] 或类似的东西。相同的扩大,但以相反的方式。

我已经搜索并找到函数InterpDecimate,它们实际上是这样做的,但问题是我没有整数放大或缩小因子。我有大小为 140 到 160 的向量,我希望它们的大小都是 150。这不能用 InterpDecimate 来完成,因为它们只适用于整数因子.

所以我想知道,是否有任何快速的方法可以做到这一点,或者我是否真的必须想出一种聪明的方法来进行这种 reshape ?

提前致谢

最佳答案

如果我对您的问题的理解正确,您想要对数据向量进行重采样。你可以做的是使用 interp1在 MATLAB 中,但您指定了从要采样的位置开始到结束的点范围,并且此范围内的点数是所需输出的总点数。

要完成您想要的,请使用 linspace .此外,您可以使用要重新采样的数组作为 outputy 值,并且可以使用 dummy x 为您尝试重新采样的数组中的每个值定义的值。像 x = [1 2 ... ] 这样简单的东西,只要你的向量中有尽可能多的元素就可以了。

使用您的小示例,执行此操作:

a = [1 3 5 7];
x = 1 : numel(a);
xp = linspace(x(1), x(end), 3); %// Specify 3 output points
y = interp1(x, a, xp)

y =

1 4 7

因此,对于您的具体情况,请更改代码的第三行,以便将 3 更改为 150a 的定义由您决定,但第二行代码和最后一行代码应保持不变。

上述方法的优点是不假设数据向量是增加或减少的。事实上,它可以是随机的。应该发生的是,您的数据(存储在 a 中)将根据您想要的点数进行重新采样。

关于arrays - Matlab 重采样向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28992197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com