重采样信号以从信号中获取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。

nidi_2 回答:重采样信号以从信号中获取N个点

resample函数的文档除了重采样因子本身之外不需要任何其他内容:

  

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

     

将x的采样率更改为p / q。这是使用多相算法执行的。抗混叠滤波器的脉冲响应h是指定的,或者是用Kaiser窗形正弦卡设计的。

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

重采样因子由ndesired_samples/nsamp给出,因此p是所需样本数,而q是总样本数。请注意,resample divides p and q by their GCD internally

当心多相结构和Kaiser插值窗口引起的问题。如果pq在GCD之后最终变大(例如,可以将10000个样本重新采样为8000个样本,将10000点重新采样为8001个则需要进一步注意),则IIRC这些问题尤其严重。

本文链接:https://www.f2er.com/2879061.html

大家都在问