【问题标题】:MATLAB: How do you avoid misaligment when resampling a segmented signal?MATLAB:重采样分段信号时如何避免错位?
【发布时间】:2017-09-27 03:10:37
【问题描述】:

由于内存限制,我在处理之前对数据进行分段和重新采样。然而,在重新采样的过程中,不知何故,样本会错位,即如果我有一个长度为 N 的信号 A,我将它分成两个较小的段 B 和 C,其中 B=A(1:j) 和 C=A(j +1:N),j之后的部分信号与原始信号A相比没有对齐。

下面的代码和图片说明了我的问题。我不那么热衷于在片段的边缘获得差异,但错误的累积对我来说是个问题。

target_freq = 1000;
sampling_frequency = 32556;

order = 2;
fcutlow_low  = 140;
fs = sampling_frequency; 
[b_low,a_low] = butter(order,fcutlow_low/(fs/2), 'low');


myresamp = @(array) resample(array,target_freq,sampling_frequency);
myfilt = @(array) filtfilt(b_low, a_low, abs(array));

mydata = rand(1,100000);
target_freq = 1000;
original_freq = fs;

segresample = [myresamp(mydata(1:end/4)) myresamp(mydata((end/4)+1:end/2)) myresamp(mydata((end/2)+1:end))];

%% misalignment at the point of segmentation
figure
subplot(2,1,1)
plot(myresamp(mydata) - segresample)
ylabel('difference')
title('resampled')

%% this works as expected

segresample = [mydata(1:end/2)...
    mydata(end/2+1:end)];

subplot(2,1,2)
plot(mydata-segresample)
title('not resampled')
ylabel('difference')

【问题讨论】:

    标签: matlab resampling segments


    【解决方案1】:

    我相信重采样是通过一组 FIR 滤波器实现的,因此当您以这种方式拆分信号时,重采样滤波器在您的分割点没有输入信号的任何历史记录,本质上是最后 n 个输入样本为零。

    为避免这种情况,您需要将信号分割成重叠的帧,提供足够的样本以使 FIR 滤波器具有足够的输入信号历史记录。考虑:

    |--------------------- long signal ------------------|
    |----- frame 1 -----|
                   |----- frame 2 -----|
                                  |----- frame 3 -----|
                                                 |----- frame 4 -----|
    

    重新采样每一帧,然后丢弃重新采样的内部帧的开头:

    |----- frame 1 -----|
                        | frame 2 -----|
                                       | frame 3 -----|
                                                      |---|
    

    通过丢弃重采样内部帧的开头,您将丢弃没有完整输入信号历史的 FIR 输出样本。

    我不确定如何预先计算 FIR 延迟大小以用于重叠大小,因此您必须进行试验。应该和sr和target_sr的比例有关。将重叠大小作为函数中的参数,以便您轻松调整。

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多