日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小波变换工程实现原理总结

發(fā)布時間:2025/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小波变换工程实现原理总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,關(guān)于小波變換的原理不再總結(jié),以前轉(zhuǎn)載過別人的文章,這篇是工程實現(xiàn)的原理總結(jié)。

2,關(guān)于小波變換的實現(xiàn)有mallat濾波器組的方法和提升小波的方法。

3,mallat濾波器組的方法大致框架如下

其中G和H的關(guān)系式為

而H可以由matlab中wfilters命令得到。

下圖是基于查找表的mallat算法框架

用matlab卷積的方法實現(xiàn)的小波分解與合成,弄了一個正弦序列,長度1000,有噪聲,通過wavedec得到分解后的序列然后通過wfilter生成的濾波器系數(shù)與正弦序列卷積然后抽取得到新的序列。

[c,l]=wavedec(ns,4,'db1');
[l_d,h_d,l_r,h_r]=wfilters('db1');
tempm=conv(ns,l_d);
tempn=conv(ns,h_d);
m=tempm(2:2:1000);
n=tempn(2:2:1000);

如果想要合成的話就先插值然后經(jīng)過重構(gòu)濾波器之后相加。

m_up=zeros(1,1000);
n_up=zeros(1,1000);
m_up(2:2:1000)=m;
n_up(2:2:1000)=n;
m_back=conv(m_up,l_r);
n_back=conv(n_up,h_r);
ns_back=m_back+n_back;

去掉第一個元素就得到之前的序列。

當然,可以用循環(huán)卷積代替卷積得到卷積結(jié)果,參考例子(轉(zhuǎn)載)

小波譜分析mallat算法經(jīng)典程序

clc;clear;
%% 1.正弦波定義
f1=50; % 頻率1
f2=100; % 頻率2
fs=2*(f1+f2); % 采樣頻率
Ts=1/fs; % 采樣間隔
N=120; % 采樣點數(shù)
n=1:N;
y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts); % 正弦波混合
figure(1)
plot(y);
title('兩個正弦信號')
figure(2)
stem(abs(fft(y)));
title('兩信號頻譜')
%% 2.小波濾波器譜分析
h=wfilters('db30','l'); % 低通
g=wfilters('db30','h'); % 高通
h=[h,zeros(1,N-length(h))]; % 補零(圓周卷積,且增大分辨率變于觀察)
g=[g,zeros(1,N-length(g))]; % 補零(圓周卷積,且增大分辨率變于觀察)
figure(3);
stem(abs(fft(h)));
title('低通濾波器圖')
figure(4);
stem(abs(fft(g)));
title('高通濾波器圖')
%% 3.MALLET分解算法(圓周卷積的快速傅里葉變換實現(xiàn))
sig1=ifft(fft(y).*fft(h)); % 低通(低頻分量)
sig2=ifft(fft(y).*fft(g)); % 高通(高頻分量)
figure(5); % 信號圖
subplot(2,1,1)
plot(real(sig1));
title('分解信號1')
subplot(2,1,2)
plot(real(sig2));
title('分解信號2')
figure(6); % 頻譜圖
subplot(2,1,1)
stem(abs(fft(sig1)));
title('分解信號1頻譜')
subplot(2,1,2)
stem(abs(fft(sig2)));
title('分解信號2頻譜')
%% 4.MALLET重構(gòu)算法
sig1=dyaddown(sig1); % 2抽取
sig2=dyaddown(sig2); % 2抽取
sig1=dyadup(sig1); % 2插值
sig2=dyadup(sig2); % 2插值
sig1=sig1(1,[1:N]); % 去掉最后一個零
sig2=sig2(1,[1:N]); % 去掉最后一個零
hr=h(end:-1:1); % 重構(gòu)低通
gr=g(end:-1:1); % 重構(gòu)高通
hr=circshift(hr',1)'; % 位置調(diào)整圓周右移一位
gr=circshift(gr',1)'; % 位置調(diào)整圓周右移一位
sig1=ifft(fft(hr).*fft(sig1)); % 低頻
sig2=ifft(fft(gr).*fft(sig2)); % 高頻
sig=sig1+sig2; % 源信號
%% 5.比較
figure(7);
subplot(2,1,1)
plot(real(sig1));
title('重構(gòu)低頻信號');
subplot(2,1,2)
plot(real(sig2));
title('重構(gòu)高頻信號');
figure(8);
subplot(2,1,1)
stem(abs(fft(sig1)));
title('重構(gòu)低頻信號頻譜');
subplot(2,1,2)
stem(abs(fft(sig2)));
title('重構(gòu)高頻信號頻譜');
figure(9)
plot(real(sig),'r','linewidth',2);
hold on;
plot(y);
legend('重構(gòu)信號','原始信號')
title('重構(gòu)信號與原始信號比較')

4,小波提升算法實現(xiàn)小波變換基本原理

5,5-3變換fpga實現(xiàn)框圖

6,關(guān)于數(shù)據(jù)的周期對稱延拓

轉(zhuǎn)載于:https://www.cnblogs.com/lianjiehere/p/4239342.html

總結(jié)

以上是生活随笔為你收集整理的小波变换工程实现原理总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。