我是Matlab的新手。使用特定的应用程序后,我得到一个文件,其中包含每160毫秒记录一次的数据加速度。
16 25 50 32 234 199 6
16 25 50 192 240 196 3
16 25 50 352 236 199 8
16 25 50 512 238 198 7
16 25 50 671 242 195 11
16 25 50 832 237 198 9
如我们在这里看到的,间隔值在+/- 160ms之间变化,它不是固定的。第4列设计了“数据时间序列”,其余的列设计了数据加速。
这里的采样率不是恒定的。所以我的目标是如何每160毫秒获得一次数据加速。我当时想通过插值对数据加速进行重新采样。首先,我将数据转换为秒
s=data(:,3)+data(:,4)/1000; % convert to seconds+fractions
dt=diff(datenum(2013,1,1,data(:,1),data(:,2),s))*86400;
t = cumsum(diff(datenum(2014,06,09,data(:,1),data(:,2),s))* 86400);
sample = interp1(t,data(:,5:end),[0:160:t(end)]);
那是对的吗?
提前致谢
我不知道这是否是你与所有的已经做了什么diff
/cumsum
东西由我觉得化妆t
从0开始:
t = datenum(2013,1,1,data(:,1),data(:,2),s)*(24*60*60);
t = t-t(1);
sample = interp1(t,data(:,5:end), 0:0.16:t(end));
这里的想法是我们知道我们想每0.16秒采样一次,但仅相对于开始时间。因此,如果将开始时间重置为0,则可以仅使用0:0.16 :(结束时间-开始时间)作为采样向量。使开始时间为0的最简单方法是简单地从整个时间向量中减去开始时间t = t - t(1)
。这也具有使t(end)
结束时间减去开始时间相等的好处。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句