matlab中的上采样数据给出了数据中的“漂移”

时间:2013-07-23 10:05:26

标签: matlab

我有2个信号,其中一个采样率为500 Hz,另一个采样率为(约为115°)。我需要对115 Hz信号进行上采样以检测500 Hz信号中的事件,但数据中似乎存在漂移。为了更清楚,我有一个事件,我可以在500 Hz信号和115 Hz中轻松检测到,但标记的位置(在115 Hz)相对于500 Hz信号中的实际事件,上采样后,整个信号发生变化。我的代码如下所示:

counter = 1;

for i = 1:length(time)
    position = round(time(i)*fs);
    if position ~= 0 && position <= size(data,1)
        convertedData(i,:) = data(position,:);
    elseif position > size(data,1)
        convertedData(i,:) = data(size(data,1),:);
    else
        convertedData(i,:) = data(1,:);        
    end
end

注意:我不需要插入点,因为无论何时放置标记都无关紧要,只要它始终位于相对于500 Hz信号中事件的相同位置。在上面的代码中,'time'是一个与500 Hz信号具有相同元素数量的数组(从0到信号结束),'fs'是标记信号的采样频率(大约115 Hz), 'data'是标记信号。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用MATLAB的一个常见问题是所有向量,矩阵等都使用基于1的索引,而不是通常用于数学,工程,DSP等的更自然的基于0的索引。在您的特定情况下需要更改position的计算:

    position = round(time(i)*fs);

为:

    position = 1 + round(time(i)*fs);

获得时间与(基于1的)样本编号之间的正确对应关系。