处理一个缺失样本的信号
考虑一个人在闰年2012年的体重记录(磅)。这个人没有每天记录他们的体重。您希望研究信号的周期性,但在此之前必须处理缺失的数据。
加载数据并将测量值转换为千克。错过的读数设置为南
。确定少了多少分。
负载(“weight2012.dat”) WGT = weight2012(:,2)/2.20462;Daynum = 1:长度(wgt);Missing = isnan(wgt);流('缺少%d\n的%d个样本'sum(失踪),max (daynum))
366个样本中缺少27个
为缺失的点赋值重新取样
。默认情况下,重新取样
使用线性插值进行估计。画出原始读数和插入读数。把时间放大到第200天到第250天,这一天包含了大约一半的缺失点。
Wgt_orig = wgt;WGT = resample(WGT,daynum);情节(daynum wgt_orig,“。”daynum重量,“o”)包含(“天”) ylabel (的体重(公斤))轴([200 250 73 77])“原始”,“插入”网格)
通过在频域分析信号来确定信号是否具有周期性。查找周期持续时间,以周为单位测量时间。减去平均值以集中于波动。
Fs = 7;[p,f] = pwelch(wgt-mean(wgt),[],[],[],Fs);情节(f p)包含(的频率(周^ {1})网格)
注意这个人的体重每周是如何波动的。每周都有明显的规律吗?去掉一年中的最后两天,就有52周了。根据星期几重新安排测量的顺序。
WGD =重塑(wgt(1:7*52),[7 52]);情节(wgd”)包含(“周”) ylabel (的体重(公斤)) dweek = datetime([repmat([2012 1],7,1) (1:7)'],“格式”,“eeee”);传奇(string (dweek),“位置”,“西北”网格)
平滑波动使用过滤器,适合低阶多项式的子集的数据。具体来说,将其设置为拟合三次多项式到七天的集合。
WGS = sgolayfilt(wgd',3,7);情节(wgs)包含(“周”) ylabel (的体重(公斤))标题(“平滑的体重波动”)传说(字符串(dweek),“位置”,“东南”);网格
这个人往往在周末吃得更多,因此体重更重。通过计算日平均值来验证。
为Jk = 1:7 fprintf('%s mean: %5.1f kg\n'dweek (jk),意味着(wgd (jk,:)))结束
星期天平均:76.2公斤星期一平均:75.7公斤星期二平均:75.2公斤星期三平均:74.9公斤星期四平均:75.1公斤星期五平均:75.3公斤星期六平均:75.8公斤