主要内容

处理丢失样本的信号

以2012年闰年记录的一个人的体重(磅)为例。这个人并没有每天记录体重。您希望研究信号的周期性,但在此之前,您必须处理掉丢失的数据。

加载数据并将测量值转换为千克。错过的读数设置为。确定丢失了多少分。

负载(“weight2012.dat”) wgt = weight2012(:,2)/2.20462;daynum = 1:长度(重量);失踪= isnan(重量);流('缺失%d个%d\n的样本'sum(失踪),max (daynum))
遗失了27个样品366个

给缺失的点赋值重新取样。默认情况下,重新取样使用线性插值进行估计。绘制原始的和插入的读数。放大第200天到第250天,其中包含了大约一半的缺失点。

wgt_orig =重量;重量=重新取样(重量、daynum);情节(daynum wgt_orig,“。”daynum重量,“o”)包含(“天”) ylabel (的体重(公斤))轴([200 250 73 77])图例(“原始”,“插入”网格)

通过在频域分析来确定信号是否具有周期性。找到循环持续时间,以周为单位测量时间。减去平均值,集中在波动上。

Fs = 7;[p f] = pwelch (wgt-mean(重量 ),[],[],[], Fs);情节(f p)包含(的频率(周^ {1})网格)

注意这个人的体重是如何每周波动的。每周都有明显的规律吗?把一年的最后两天去掉,得到52周。根据一周的日期重新安排测量。

wgd = shape(wgt(1:7*52),[7 52]);情节(wgd”)包含(“周”) ylabel (的体重(公斤)) q = legend(datestr(datenum(2012,1,1)),“dddd”));q.Location =“西北”;网格

使用滤波器平滑波动,适合低阶多项式的子集的数据。具体来说,设置为将三次多项式拟合为7天的集合。

wgs = sgolayfilt (wgd ', 3、7);情节(wgs)包含(“周”) ylabel (的体重(公斤))标题(平滑的体重波动的) q = legend(datestr(datenum(2012,1,1)),“dddd”));q.Location =“东南”;网格

这个人往往在周末吃得更多,因此体重也更重。通过计算日平均值进行验证。

jk = 1:7 fprintf('%3表示:%5.1f kg\n',datestr (datenum (2012, jk),ddd的)”,意思是(wgd (jk,:)))结束
太阳平均值:76.2公斤,星期一平均值:75.7公斤,星期二平均值:75.2公斤,星期三平均值:74.9公斤,星期四平均值:75.1公斤,星期五平均值:75.3公斤,星期六平均值:75.8公斤

另请参阅

|

相关的话题