重采样信号以从信号中获取 N 个点



我有一个信号,我想从中得到n个等间距的点。

我正在考虑使用resample作为执行此操作的一种方式,但我不确定要使用的正确值。

示例:我有一个以 8000 Hz 采样的正弦波信号,但我想从信号中只获得 4 个等间距的点。

fs=8000
len_of_sig=1.0; %length of signal in seconds
t=linspace(0,len_of_sig,fs*len_of_sig);
y=1*sin(1*(2*pi)*t);
spaced_points=resample(y,)

我不确定如何计算正确的值来获得n个等间距的点(如 4,5,6...点(。

有什么想法吗? 我真的不需要使用resample,我只是认为这将是最快的。

我在 Ubuntu 64 位上使用 Octave 4.2.2

除了重采样因子本身之外,resample函数的文档不需要任何东西:

y = resample (x, p, q, h)

将 x 的采样率更改 p/q 因子。这是使用多相算法执行的。抗混叠滤波器的脉冲响应h要么是指定的,要么是用凯撒窗口正弦卡设计的。

假设您有变量ndesired_samples,它指定您最终需要多少样本。让nsamp = fs*len_of_sig.

重采样因子由ndesired_samples/nsamp给出,因此p是所需样本的数量,q是总样本数。请注意,重采样会在内部将pq除以其 GCD。

请注意由多相结构和 Kaiser 插值窗口引起的问题。IIRC 如果 GCD 后pq最终变大,则这些尤其糟糕(即将 10000 个样本重新采样到 8000 个样本是可以的,将 10000 个点重新采样到 8001 需要进一步谨慎(。

最新更新