我有两个信号,其中一个的采样率为500 Hz,另一个的采样率为115 Hz (确切地说不是大约)。我需要对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”是标记信号。
谢谢你的帮助!
发布于 2013-07-23 20:51:20
使用MATLAB的一个常见问题是,所有向量、矩阵等都使用基于1的索引,而不是更自然的基于0的索引,后者通常用于数学、工程、数字信号处理等。在您的特定情况下,position的计算需要更改为:
position = round(time(i)*fs);至:
position = 1 + round(time(i)*fs);为了获得时间和(基于1的)样本数量之间的正确对应关系。
https://stackoverflow.com/questions/17807126
复制相似问题