主要内容

匹配的追求

匹配追踪字典创建与可视化

这个例子展示了如何创建和可视化一个由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 (“使用”

图中包含一个轴对象。axis对象包含一个line类型的对象。

用电量数据包含平滑的振荡,中间穿插着使用量的突然增加和减少。

将时间间隔从500分钟放大到1200分钟。

xlim(1200年[500])

图中包含一个轴对象。axis对象包含一个line类型的对象。

您可以在大约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 (“使用”)传说(原始信号的“经济”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示原始信号,OMP。

可以看到,在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])

图中包含一个轴对象。标题为DCT和sin Dictionary的axes对象包含2个类型为line的对象。

图(x) hold住情节(y,“线宽”, 2)标题(“完整的字典”)包含(“分钟”) ylabel (“使用”xlim([500 1200])

图中包含一个轴对象。标题为Full Dictionary的axes对象包含2个类型为line的对象。

在离散傅里叶基下获得信号的最佳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近似”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表原始信号,非线性DFT近似。

与dct -sin字典相似,非线性DFT近似在匹配用电数据中的平滑振荡方面表现良好。然而,非线性DFT近似并不能准确地逼近突变。放大包含消费突然变化的数据的间隔。

情节(x)情节(xrec“线宽”, 2)包含(“分钟”) ylabel (“使用”)传说(原始信号的“非线性DFT近似”xlim([500 1200])

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表原始信号,非线性DFT近似。