【发布时间】: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