格子乘法与卷积-》卷积定理-》小波分析(暂记)

格子乘法与卷积-》卷积定理-》小波分析(暂记)_第1张图片

卷积:连续时间信号变为冲击信号的和

  • “多项式乘法”的柯西乘法公式
    多项式做“乘法”,相应的系数就做“卷积”。在《signal and system》中,这就是“Z-变换”的性质。
    卷积满足:交换律,对加法的分配律,结合律,位移特性,点乘,微分与积分性质,
    如果把上面的字母x替换成数字10,那么就化成了数字的乘法,也就是格子乘法的原理。

  • 卷积计算乘法:气泡冲击波法

卷积定理:加和相乘的算法,只是“基”变换了

  • 卷积定理是傅立叶变换满足的一个重要性质。卷积定理指出,函数卷积的傅立叶变换是函数傅立叶变换的乘积。具体分为时域卷积定理和频域卷积定理,时域卷积定理即时域内的卷积对应频域内的乘积;频域卷积定理即频域内的卷积对应时域内的乘积,两者具有对偶关系。

函数卷积的傅里叶变换等于傅里叶变换的乘积

在这里插入图片描述

滤波器

MALLET分解算法,多分辨分析

  • 首先傅立叶级数展开具有 “各代波形都相似;各代波形都正交”的特点,
    格子乘法与卷积-》卷积定理-》小波分析(暂记)_第2张图片
    格子乘法与卷积-》卷积定理-》小波分析(暂记)_第3张图片

格子乘法与卷积-》卷积定理-》小波分析(暂记)_第4张图片

获得系数运行:dwtmtx_ceshi
格子乘法与卷积-》卷积定理-》小波分析(暂记)_第5张图片
格子乘法与卷积-》卷积定理-》小波分析(暂记)_第6张图片

function[sig1,sig2] =xiaobobianhaun(y)
%小波工具箱的函数
%https://wenku.baidu.com/view/4aec0fc60508763231121266.html   Mallat算法小结含MATLAB编程
%dwt   https://blog.csdn.net/ljh0302/article/details/51202243
%dwt的c++实现 https://www.it610.com/article/3706948.htm
% clc;clear;
% wname='haar';%db1小波函数(Haar小波)
% t=1:200;
% %y=[6.776 9.287 7.795 6.535 5.074 4.401 5.252 5.376 4.088 6.812 5.977 7.135 8.336 10.173 11.564 6.419 5.368 5.260 6.282 5.844 6.277 4.379 5.546 7.385 4.859 7.759 10.446 9.820 7.626 5.895 4.767 5.545 5.092 5.910 5.302 5.359 6.786 6.556 10.297 7.390 9.776 7.149 7.335 6.671 5.381 5.554 4.578 5.631 4.986 7.278 6.747 6.625 9.162 12.199 6.332 5.976 6.335 6.026 6.081 4.973 4.209 6.153 7.251 5.629 7.273 7.629 9.538 7.904 6.140 6.136 5.608 5.090 7.032 5.643 6.473 5.723 5.467 8.723 9.211 11.038 5.736 6.535 6.215 5.977 5.734 5.108 3.708 5.934 5.815 5.377 10.424 7.098 9.566 8.037 7.199 6.571 6.416 6.706 4.735 5.405 5.685 7.041 5.688 8.260 9.145 11.300 8.604 6.707 5.698 6.048 5.309 5.568 5.132 5.261 6.868 6.898 8.694 6.810 11.884 8.218 6.744 5.460 4.652 6.458 5.496 4.271 5.440 7.363 7.087 8.654 10.315 12.142 6.082 5.817 6.452 5.741 5.497 6.940 3.893 5.166 4.850 5.121 7.849 6.922 8.714 6.787 5.950 4.948 5.970 6.095 5.030 5.429 5.851 5.358 6.862 7.092 10.372 10.469 7.418 6.428 6.299 4.694 6.502 5.120 4.234 4.944 6.683 6.425 8.346 9.172 11.665 5.538 5.321 6.559 6.189 4.882 4.774 5.398 5.675 7.087 5.566 8.088 9.159 10.334 6.088 7.151 4.972 5.828 4.627 5.267 3.752 5.457 6.112 5.895 6.693 7.207 10.796 7.819 5.215 6.707];
% plot(y);title('原始风速数据');
% [cA,cD]=dwt(y,wname);%小波单尺度分解
% P=1:100;
% net=newff([1 100],[8,1],{'tansig','tansig'},'trainlm');
% net.trainParam.show=50;
% net.trainParam.lr=0.5;
% net.trainParam.epochs=3000;
% net.trainParam.goal=0.001;
% net=train(net,P,cA);
% net.iw{1,1}%隐层权值 
% net.b{1}%隐层阈值
% net.lw{2,1}%输出层权值
% net.b{2}%输出层阈值
% cA1=sim(net,P);
% plot(P,cA,'*',P,cA1,'+');










y=gaotie';
for i=1:1024
    y(i)=sin(i)+cos(i^3);%4.055864801996711e-16   1.792478702202308e-04
    y(i)=y(i)*1000;
    %y(i)=1;%2.220446049250313e-16   7.771561172376096e-16
    %y(i)=(-1)*(i-1)*(i-1024);
end
plot(y);
%问题:如何计算响应系数hn gn
wavename='db30';

%如何画出haar小波的基函数  https://www.ilovematlab.cn/thread-167409-1-1.html
[phi,pgi,x] = wavefun(wavename);
subplot(211),stem(x,phi)
subplot(212),stem(x,pgi)
%https://my.oschina.net/u/162807/blog/222092
N=length(y);% 采样点数

%% 2.小波滤波器谱分析     两个长为120的滤波器
h=wfilters(wavename,'l'); % 低通
g=wfilters(wavename,'h'); % 高通

h=[h,zeros(1,N-length(h))]; % 补零(圆周卷积,且增大分辨率变于观察)
g=[g,zeros(1,N-length(g))]; % 补零(圆周卷积,且增大分辨率变于观察) 总长和序列的 长度一样 前边是值 后边是零
h=-h;
g=-g;
% figure(3);
% stem(abs(fft(h)));
% title('低通滤波器图')
% figure(4);
% stem(abs(fft(g)));
% title('高通滤波器图')
%% 3.MALLET分解算法(圆周卷积的快速傅里叶变换实现)
sig1=ifft(fft(y).*fft(h)); % 低通(低频分量)         频域的乘积?=时域的卷积
sig2=ifft(fft(y).*fft(g)); % 高通(高频分量)
%以上为信号通过系统
%应该分别进行二抽样才能得到下一层的系数(信号)
% 点乘是数组的运算,不加点是矩阵的运算!
% 点乘要求参与运算的两个两必须是维数相同,是对应元素的相乘或者相除!
% 而不加点表示的是矩阵相乘或者相除(除的时候通过逆矩阵来实现),要求内维相同,也就是前一个矩阵的列的维数等于后一个矩阵的行的维数
% [1 2 3 ].*[4 5 6]=[4 10 18]
sig1=dyaddown(sig1); % 2抽取
sig2=dyaddown(sig2); % 2抽取
%进行了2抽取即为得到的系数  在变量区可见各为60个 总数和正弦波信号的采样点数一样
figure(5); % 信号图
subplot(2,1,1)
plot(real(sig1));
title('分解信号1')
subplot(2,1,2)
plot(real(sig2));
title('分解信号2')
%现在乘以小波的基即可进行重构
%写出所用的小波的函数
%看所做笔记的最后一页v j+1空间的基应为极细的平凡积(这样才能使系数等于取样值)
%实际上用256个点的矩形去近似得到程序开始之前的函数 phi pgi进行重构
% function f=my(x)
% f=2*x+1
% 
% end
%% 4.MALLET重构算法   就是还原到原来的系数(即离散的函数)
sig1=dyadup(sig1); % 2插值
sig2=dyadup(sig2); % 2插值
sig1=sig1(1,[1:N]); % 去掉最后一个零 使位数相等
sig2=sig2(1,[1:N]); % 去掉最后一个零
hr=h(end:-1:1); % 重构低通   B=A(end:-1:1,:)表示将A的行的顺序从尾到头排列构成B,也就是B的第一行对应A的最后一行,第二行对应A的倒数第二行,以此类推.
gr=g(end:-1:1); % 重构高通
hr=circshift(hr',1)'; % 位置调整圆周右移一位
gr=circshift(gr',1)'; % 位置调整圆周右移一位
sig1=ifft(fft(hr).*fft(sig1)); % 低频
sig2=ifft(fft(gr).*fft(sig2)); % 高频
sig=sig1+sig2; % 源信号
error=sum(abs(sig-y))/N;


















%x=[1 2 3 4 5 6 7 8 9 10];dyaddown(x,0)=[2 4 6 8 10]
%x=[1 2 3 4 5 6 7 8 9 10];dyaddown(x,1)=[1 3 5 7 9] 
%x=[2 4 6 8 10];dyadup(x)=[0  2 0 4 0 6 0 8 0 10]





%% 5.比较
% figure(7);
% subplot(2,1,1)
% plot(real(sig1));
% title('重构低频信号');
% subplot(2,1,2)
% plot(real(sig2));
% title('重构高频信号');
% figure(8);
% subplot(2,1,1)
% stem(abs(fft(sig1)));
% title('重构低频信号频谱');
% subplot(2,1,2)
% stem(abs(fft(sig2)));
% title('重构高频信号频谱');
% figure(9)
% plot(real(sig),'r','linewidth',2);%线型的宽度,粗细尺寸2
% hold on;
% plot(y);%原始信号
% legend('重构信号','原始信号')
% title('重构信号与原始信号比较')
%%提升小波更不准
% %%%%%%%%%%%%%%%%%%%%%%%%%%%11.15
% % By lyqmath
% % DLUT School of Mathematical Sciences 2008
% % BLOG:lyqmath_新浪博客
% %clc; clear all; close all;
% %load leleccum; % 载入信号数据
% s = gaotie';
% Len = length(s);
% [ca1, cd1] = dwt(s, 'db30'); % 采用db1小波基分解
% a1 = upcoef('a', ca1, 'db1', 1, Len); % 从系数得到近似信号
% d1 = upcoef('d', cd1, 'db1', 1, Len); % 从系数得到细节信号
% s1 = a1+d1; % 重构信号
% figure;
% subplot(2, 2, 1); plot(s); title('初始电源信号');
% subplot(2, 2, 2); plot(ca1); title('一层小波分解的低频信息');
% subplot(2, 2, 3); plot(cd1); title('一层小波分解的高频信息');
% subplot(2, 2, 4); plot(s1, 'r-'); title('一层小波分解的重构信号');
% error=sum(abs(s1-s))/Len;%6.132143556058494e+02
% %%%%%%%%%%%%%%%%%%%%%%%%%%%11.15

end

你可能感兴趣的:(数据分析,卷积)