匹配的追求
匹配追踪字典创建与可视化
这个例子展示了如何创建和可视化一个由Haar小波组成的字典,小到第2级。
[mpdict,~,~,long] = wmpdictionary(100,“lstcpt”{{“哈雾”, 2}});
使用多头
输出参数以按函数级别和类型(缩放或小波)划分小波字典。逐步通过一个图的翻译尺度函数和小波的水平。
为Nn = 1:size(mpdict,2)如果(nn <= long{1}(1)) plot(mpdict(:,nn),“k”,“线宽”, 2)网格在包含(“翻译”)标题(“哈尔缩放功能- 2级”)elseif(nn >多头{1}(1)& & nn < =多头{1}(1)+多头{1}(2))的阴谋(mpdict (:, nn),“r”,“线宽”, 2)网格在包含(“翻译”)标题(“Haar小波-二级”)其他的情节(mpdict (:, nn),“b”,“线宽”, 2)网格在包含(“翻译”)标题(Haar小波1级)结束暂停(0.2)结束
这个动画无限循环遍历所有生成的情节。
一维信号的正交匹配追踪
这个例子展示了如何在包含尖点的1-D输入信号上执行正交匹配追踪。
加载cuspamax信号。构造一个由4级Daubechies最小不对称小波包、2级Daubechies极值相位小波、DCT-II基、sin基和移位Kronecker delta基组成的字典。
负载cuspamax;Dict = {{“wpsym4”1}, {“db4”2},“dct”,“罪”,“RnIdent”};Mpdict = wmpdictionary(length(cuspamax)),“lstcpt”、dict);
使用正交匹配追踪法获得过完备字典mpdict中信号的近似值,迭代25次。将结果绘制为电影,每5次迭代更新一次。
[yfit,r,coeff,iopt,qual] = wmpalg(“经济”cuspamax mpdict,“typeplot”,...“电影”,“stepplot”5);
基于匹配追踪的电力消耗分析
这个例子展示了如何在离散傅里叶变换的基础上比较匹配追踪和非线性逼近。该数据是24小时内收集的用电量数据。实例表明,通过从字典中选择原子,匹配追踪通常能够比任何单个基更有效地用M个向量近似一个向量。
匹配追踪使用DCT,正弦和小波字典
加载数据集并绘制数据图。数据集包含35天的电力消耗。选择第32天进行进一步分析。数据是居中和缩放的,因此实际的使用单位是不相关的。
负载elec35_norX = signals(32,:);情节(x)包含(“分钟”) ylabel (“使用”)
用电量数据包含平滑的振荡,中间穿插着使用量的突然增加和减少。
将时间间隔从500分钟放大到1200分钟。
xlim(1200年[500])
您可以在大约650分钟、760分钟和1120分钟的缓慢变化信号中看到突变。在许多像这些数据的现实信号中,有趣而重要的信息包含在瞬态中。对这些瞬态现象进行建模是很重要的。
利用正交匹配追踪(OMP)从字典中选择35个向量构造一个信号逼近。字典由2级的Daubechies极值相位小波和缩放向量、离散余弦变换(DCT)基、正弦基、Kronecker delta基和1级和4级的Daubechies最小不对称相位小波和缩放向量组成。然后,利用OMP求用电数据的最佳35项贪婪逼近。画出结果。
字典= {{“db1”2}, {“db1”3},“dct”,“罪”,“RnIdent”, {“sym4”4}};[mpdict,nbvect] = wmpdictionary(length(x),“lstcpt”,字典);[y,~,~,iopt] = wmpalg(“经济”, x, mpdict);情节(x)在情节(y)从包含(“分钟”) ylabel (“使用”)传说(原始信号的,“经济”)
可以看到,在35个系数的情况下,正交匹配追踪逼近信号的平滑振荡部分和用电量的突然变化。
确定OMP算法从每个子字典中选择了多少个向量。
Basez = cumsum(nbvect);K = 1;为Nn = 1:长度(basez)如果(nn == 1) basezind{nn} = 1:basez(nn);其他的Basezind {nn} = basez(nn-1)+1:basez(nn);结束结束Dictvectors = cellfun(@(x)intersect(iopt,x),basezind,...“UniformOutput”、假);
大多数(60%)向量来自DCT和正弦基。考虑到电力消耗数据的整体缓慢变化性质,这是预期的行为。小波子字典中附加的14个向量捕捉到信号的突变。每种类型的向量数为:
3 Daubechies小波(db4)二级向量
离散的余弦变换向量
5正弦向量
2 Daubechies最小不对称小波(sym4) 1级向量
9 Daubechies最小不对称小波(sym4) 4级向量
使用DCT和正弦字典与全字典的匹配追踪
只对DCT和sin子字典重复OMP。设置OMP从dct -sin字典中选择35个最佳向量。构造字典并执行OMP。比较带有dct -sin字典的OMP和带有附加小波子字典的OMP。注意,添加小波子字典可以更准确地显示用电量的突变。包括小波基的优势是特别明显的,特别是在接近大约650分钟和1120分钟的向上和向下的使用峰值时。
Dictionary2 = {“dct”,“罪”};[mpdict2,nbvect2] = wmpdictionary(length(x),“lstcpt”, dictionary2);Y2 = wmpalg(“经济”, x, mpdict2“itermax”35);情节(x)在情节(y2,“线宽”, 2)从标题(DCT和正弦字典)包含(“分钟”) ylabel (“使用”xlim([500 1200])
图(x) hold住在情节(y,“线宽”, 2)从标题(“完整的字典”)包含(“分钟”) ylabel (“使用”xlim([500 1200])
在离散傅里叶基下获得信号的最佳35项非线性逼近。获得数据的DFT,对DFT系数进行排序,选出35个最大的系数。实值信号的DFT是共轭对称的,因此只考虑从0 (DC)到奈奎斯特(1/2周期/分钟)的频率。
XDFT = fft(x);[~,I] = sort(xdft(1:length(x)/2+1),“下”);ind = I(1:35);
检查矢量印第安纳州
.没有一个指标对应于0或奈奎斯特。加上相应的复共轭,得到DFT基下的非线性近似。画出近似值和原始信号。
Indconj = length(xdft)-ind+2;Ind = [Ind indconj];Xdftapp = 0(大小(xdft));Xdftapp (ind) = xdft(ind);Xrec = ifft(xdftapp);情节(x)在情节(xrec“线宽”, 2)从包含(“分钟”) ylabel (“使用”)传说(原始信号的,“非线性DFT近似”)
与dct -sin字典相似,非线性DFT近似在匹配用电数据中的平滑振荡方面表现良好。然而,非线性DFT近似并不能准确地逼近突变。放大包含消费突然变化的数据的间隔。
情节(x)在情节(xrec“线宽”, 2)从包含(“分钟”) ylabel (“使用”)传说(原始信号的,“非线性DFT近似”xlim([500 1200])