我有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'是标记信号。
感谢您的帮助!
答案 0 :(得分:2)
使用MATLAB的一个常见问题是所有向量,矩阵等都使用基于1的索引,而不是通常用于数学,工程,DSP等的更自然的基于0的索引。在您的特定情况下需要更改position
的计算:
position = round(time(i)*fs);
为:
position = 1 + round(time(i)*fs);
获得时间与(基于1的)样本编号之间的正确对应关系。