arrays - MATLAB:比较两个不同长度的数组

标签 arrays matlab size match sampling

我需要比较两个长度不同的数组(由于采样率不同)。我想对较大的数组进行下采样以匹配较小的数组的长度,但是该因子不是整数而是小数。

举个例子:

a =
     1     1.375     1.75     2.125     2.5     2.875     3.25

b =
     1     2     3

有什么方法可以操作这些数组以匹配长度吗?

最佳答案

巧妙地使用 interp1 就可以轻松做到这一点。诀窍在于,用于插值的关键点是一个从 1 到 a 中的任意值的数组,我们将其称为 N,并且插值的关键点将是一个线性递增数组,其中第一个点是 1,最后一个点是 N,并且您均匀地划分该范围以获得与 b 中一样多的点。

简单地说:

anew = interp1(1:numel(a), a, linspace(1, N, numel(b)));

linspace生成一个从 1 到 N = numel(a) 的线性递增数组,其中包含任意数量的点,我们将其确定为 b 中的元素总数。这准确地指定了您想要为您提供与 b 长度匹配的 a 下采样版本的正确关键点,尽管需要进行一些插值。默认插值方法是线性的。

使用您提供的 a 中的示例输入,我们得到:

>> anew

anew =

    1.0000    2.1250    3.2500

关于arrays - MATLAB:比较两个不同长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38664184/

相关文章:

ios - 我可以在没有模拟器 (i386) 支持的情况下发布 iOS 应用程序吗?

javascript - 将对象转换为对象数组?

jquery - 按日期排序并输出 jQuery 数据数组(来自 XML)

matlab - 如何在 Octave 中执行 .m 文件

c - 解决 matlab 函数 : expected '=' , ',' 、 ';' 、 'asm' 或 '__attribute__' 之前 '.' token 中 Simulink C 代码的编译错误

c - Cygwin/Windows 64 位上的堆栈大小是多少?

javascript - 制作一个返回各种数组的函数?

C++将数据读入结构数组

matlab - 如何在 Matlab 中编辑 "mexopt.bat"文件?

sql-server - 数据库规模巨大