一維時間序列信號的小波模極大值分解與重建(matlab R2018A)

數學上稱無限次可導函數是光滑的或沒有奇異性,若函數在某處有間斷或某階導數不連續,則稱函數在此處有奇異性,該點就是奇異點。奇異性反映了信號的不規則程度,因為信號的奇異點和突變部分往往攜帶者重要信息,因此信號的奇異性檢測非常有必要。信號的奇異性由Lipschitz指數來描述和衡量。

通常情況下,信號的奇異性可分為兩種情況:一種是信號在某一時刻,其幅值發生突變,引起信號的不連續性,另一種是信號外觀上光滑,其幅值沒有突變,但是在信號的一階微分上有突變產生。Fourier變換是研究函數奇異性的基本工具,但它只能確定信號是否具有奇異性和奇異性的強弱,而不能確定奇異點的分布情況及奇異點的位置。由于小波變換理論在時域和頻域良好的局部化或近似局部化性質,因此小波變換作為檢測信號奇異性的工具,較好地解決了信號奇異檢測的問題。

當小波函數可看做某一平滑函數的一階導數時,信號小波變換模的局部極值點對應于信號的突變點(或邊緣),因此,采用檢測小波變換系數模的過零點和局部極值點的方法可以檢測信號的突變點。

鑒于此,采用小波模極大值分解與重建對一維時間序列信號進行處理,運行環境為matlab R2018A,主運行代碼如下:

%% 小波模極大值重構是采用的交替投影法
close all;
points = 1024;   % 所處理數據的長度
level = 6;       % 分解的級數 
sr = 360;        % 抽樣率, P gama投影要用的
num_inter = 6;   % 迭代次數  
wf='db3';      % 小波名稱       
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(wf);% 得到小波變換要用的濾波器
%ecgdata = load('ecg.txt');  %需要分析的信號
%signal = ecgdata(1:points,3)';% 取第3列,不懂可以打開ecg.txt看一下% 這個信號是可以換的,做過一個信號文件就可以。
%signal = signal * 300;        % 乘以300,數據大一點顯示出來漂亮一點,不為什么
%調用wave_peak進行小波變換,計算小波分解系數和模極大序列
signal = signal_fig1;
[swa,swd,ddw,wpeak] = wave_peak(signal,level,Lo_D,Hi_D);
% signal:  原始信號;       swa:小波概貌;  swd:小波細節;
% ddw:     局部極大位置; wpeak:小波變換的局部極大序列]
% 作圖:左列為各層的概略信號,右列為各層的細節信號(即小波變換)
figure;
subplot(level,1,1); plot(real(signal)); grid on;axis tight;
title('original signal(Upper)、wavelet transform (Lower left)and modulus maxima(Lower right)');
for i=1:level%概略信號subplot(level+1,3,3*(i)+1);plot(swa(i,:)); axis tight; grid on; xlabel('time');ylabel(strcat('a   ',num2str(i)));%小波變換subplot(level+1,3,3*(i)+2);plot(swd(i,:)); axis tight;grid on;ylabel(strcat('d   ',num2str(i)));%模極大值subplot(level+1,3,3*(i)+3);plot(wpeak(i,:)); axis tight;grid on;ylabel(strcat('j=   ',num2str(i)));
endpswa = swa(level,:);  % pswa: 第level層的概略信號仍然保留為重構用
wframe = (wpeak~=0);  % wframe 中的1標明wpeak非零的位置,即模極大值的位置
%迭代初始化
w0=zeros(1,points);   % 重構信號初始值設為0
[a,d]=swt(w0,level,Lo_D,Hi_D);   % 做一次穩定小波變換,結果在a和d里面,層數level不變
w2=d;                            % w2為待重建小波,上一行和這一行好像可以省去for j=1:num_inter            % 循環重構,d -> w2 -> w0 -> d -> w2 -> w0 -> dw2=Py_Pgama(d,wpeak,wframe,1,sr);  % 先進行Py投影和 Pgama投影w0=iswt(pswa,w2,Lo_R,Hi_R);         % 再進行Pv投影(小波逆變換)[a,d]=swt(w0,level,Lo_D,Hi_D);      % Pvend
% 最后通過w2做逆小波變換得到重構信號:
pswa = iswt(swa(level,:),w2,Lo_R,Hi_R); % 計算重建信號% 原信號和由模極大重建信號的比較
figure,
subplot(211);
plot(pswa(1:points));        % 重構信號描圖
title('The comparation between original signal (Upper) and reconstructed signal (Lower)');
subplot(212);
plot(signal(1:points),'r');  % 原始信號描圖%分別計算重建小波以及原信號的信噪比
werr = w2 - swd; % 原信號的小波變換的細節部分和重構信號的細節部分的誤差,即 
% 原信號的小波變換(swd)和重建后的小波變換(w2)的比較
figure,
wsnr = zeros(level,1);     % 存儲每一層的信噪比
for m=1:level              % norm為2范數,即均方值wsnr(m) = 20*log10(norm(swd(m,:))/norm(werr(m,:)));subplot(level,1,m);plot(swd(m,:)),hold on,%紅色的重構小波變換覆蓋在原圖上plot(w2(m,:),'r');grid on;ylabel(strcat('j=',num2str(m))),axis tight;if(m==1)title('The wavelet transform of original signal (blue) and the wavelet transform of reconstructed signal (red)');end
endwsnr                                   % 小波域計算出的各層的信噪比
err = pswa(1:points)-signal(1:points); % 時域的誤差信號
mse = mean(err.^2)                      % 均方誤差
smse = mean(signal.^2);                 % 信號的均方值
%完整代碼:https://mbd.pub/o/bread/mbd-ZZeTmZ5u
snr = 10*log10(smse/mse)                % 時域中計算的信噪比(dB值)

圖片

圖片

圖片

工學博士,擔任《Mechanical System and Signal Processing》《中國電機工程學報》《控制與決策》等期刊審稿專家,擅長領域:現代信號處理,機器學習,深度學習,數字孿生,時間序列分析,設備缺陷檢測、設備異常檢測、設備智能故障診斷與健康管理PHM等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20636.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20636.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20636.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JDK1.8新特性1

JDK1.8新特性1 JDK1.8新特性:Lambda表達式:使用:無參數無返回值:單參數無返回值:多參數無返回值:多參數有返回值: 案例:案例1:案例2:案例3: 函數式…

代碼隨想錄訓練營Day 42|力扣62.不同路徑、63. 不同路徑 II

1.不同路徑 代碼隨想錄 視頻講解:動態規劃中如何初始化很重要!| LeetCode:62.不同路徑_嗶哩嗶哩_bilibili 代碼: class Solution { public:int uniquePaths(int m, int n) {// dp[i][j] 表示從起點走到坐標為i,j的地方…

全自動打包封箱機:解析其在產品質量與安全保障方面的作用

在當今快節奏的生產環境中,全自動打包封箱機以其高效、精準的特點,正逐漸成為生產線上的得力助手。它不僅提升了生產效率,更在產品質量與安全保障方面發揮著舉足輕重的作用。星派將詳細解析全自動打包封箱機在產品質量與安全保障方面的作用。…

css簡單介紹

1.css介紹 css指的是層疊樣式(Cascadingstyle sheets),是用來給HTML標簽添加樣式的語言。他可以設置HTML頁面中 文字大小,顏色,對齊方式及元素的 寬高, 位置 等樣式。 一個完整的網頁是由HTML、CSS、Javascript三部分組成。HT…

CLIP--Learning Transferable Visual Models From Natural Language Supervision

參考:CLIP論文筆記--《Learning Transferable Visual Models From Natural Language Supervision》_visual n-grams模型-CSDN博客 openAI,2021,將圖片和文字聯系在一起,----->得到一個能非常好表達圖片和文字的模型主題&#…

網絡安全-釣魚篇-利用cs進行釣魚

一、環境 自行搭建,kill,Windows10,cs 二、原理 如圖所示 三、釣魚演示 首先第一步:打開System Profiler-分析器功能 選擇克隆www.baidu.com頁面做釣魚 之后我們通過包裝域名,各種手段讓攻擊對象訪問:h…

Java面試題:Redis1_Redis的使用場景和如何解決Redis緩存穿透問題

Redis使用場景常見問題 緩存 緩存三兄弟(穿透,擊穿,雪崩) 雙寫一致 持久化 數據過期策略 數據淘汰策略 分布式鎖 setnx,redisson 消息隊列,延遲隊列 … 解決Redis緩存穿透問題 緩存穿透問題 請求->redis緩存->mysql數據庫 當一個新請求到來時,先會訪問redi…

JVM(Java虛擬機)筆記

面試常見: 請你談談你對JVM的理解?java8虛擬機和之前的變化更新?什么是OOM,什么是棧溢出StackOverFlowError? 怎么分析?JVM的常用調優參數有哪些?內存快照如何抓取?怎么分析Dump文件?談談JVM中,類加載器你的認識…

前端最新面試題(基礎模塊HTML/CSS/JS篇)

目錄 一、HTML、HTTP、WEB綜合問題 1 前端需要注意哪些SEO 2 img的title和alt有什么區別 3 HTTP的幾種請求方法用途 4 從瀏覽器地址欄輸入url到顯示頁面的步驟 5 如何進行網站性能優化 6 HTTP狀態碼及其含義 7 語義化的理解 8 介紹一下你對瀏覽器內核的理解? 9 html…

【C++】vector常見的使用方式

前言:在上一篇中我們講到了string類的模擬實現,今天我們將進一步的去學習vector的一些常用的使用方法。 💖 博主CSDN主頁:衛衛衛的個人主頁 💞 👉 專欄分類:高質量C學習 👈 💯代碼倉…

命運方舟臺服注冊 命運方舟臺服怎么注冊?不會操作看這里

命運方舟臺服注冊 命運方舟臺服怎么注冊?不會操作看這里 命運方舟作為今年備受矚目的一款MMORPG類型游戲,在上線前的預約數量已經一次又一次創下新高。這款游戲的開發商Smile gate真是給玩家們帶來了一款讓人眼前一亮的作品。游戲創建在虛幻引擎的基礎…

USACO 2019 December Contest, BronzeProblem 2. Where Am I? 題解

這道題目通過例子可以看出查找最長的相同子串&#xff0c;下一個長度如果沒有找到相同的子串就是結果&#xff0c;需要寫三個循環&#xff0c;第一個循環是是否存在長度為len的相同子串&#xff0c;第二個循環是從左往右截取長度為len的子串&#xff0c;第三個循環的條件是j<…

用esp prog燒錄ESP32-C3板踩坑

附ESP32C3的GPIO一覽&#xff1a; vscode選擇Jtag燒錄&#xff0c;終端輸出esp_usb_jtag: could not find or open device&#xff1a; D:\Devtools\Espressif\tools\openocd-esp32\v0.12.0-esp32-20230921\openocd-esp32\bin\openocd.exe -f board/esp32s3-builtin.cfgOpen O…

【電路筆記】-帶阻濾波器

帶阻濾波器 文章目錄 帶阻濾波器1、概述2、典型帶阻濾波器配置3、帶阻濾波器示例14、陷波濾波器5、帶阻濾波器示例26、總結帶阻濾波器也稱為陷波濾波器,阻止并拒絕位于其兩個截止頻率點之間的頻率,并傳遞該范圍兩側的所有這些頻率。 1、概述 通過將基本 RC 低通濾波器與 RC …

Docker基礎命令(三)

同步docker容器中的時間和本地時間一致 背景: 在很多時候, 訓練模型的時候, 記錄的log日志中標記的時間和實際的時間不一致, 往往是容器時間和本地時間不一致照成的. 方案 場景一: 正在運行的容器&#xff0c;可以宿主機直接執行命令給某個容器同步時間 #方法1 直接在宿主機…

ElasticSearch教程(詳解版)

本篇博客將向各位詳細介紹elasticsearch&#xff0c;也算是對我最近學完elasticsearch的一個總結&#xff0c;對于如何在Kibana中使用DSL指令&#xff0c;本篇文章不會進行介紹&#xff0c;這里只會介紹在java中如何進行使用&#xff0c;保證你看完之后就會在項目中進行上手&am…

Arduino燒錄esp8266

default_encoding: cp936 Assume aggressive ‘core.a’ caching enabled. Note: optional global include file ‘arduino_modified_sketch_764314\Blink.ino.globals.h’ does not exist. Read more at https://arduino-esp8266.readthedocs.io/en/latest/faq/a06-global-bui…

【計劃】裝修相關感想

計劃 Summary 從去年年底開始規劃、設計、落實家里的裝修&#xff0c;2024年4月正式開始裝修&#xff0c;一個人探索和學習了很多知識和概念。 準備把這些東西做一些記錄和分享&#xff0c;一方面記錄一些裝修的流程和中間的小細節便于第二次裝修的時候避免&#xff1b;另一方…

Android設備實時監控藍牙的連接、配對、開關3種狀態

一、簡介 Android設備&#xff0c;需要實時監控本機藍牙連接其他藍牙設備的狀態&#xff0c;包含&#xff1a;連接、配對、開關3種狀態。本文介紹了2種方法&#xff0c;各有優勢&#xff0c;下面來到我的Studio一起瞅瞅吧~ 二、定時器任務 Handler 功能方法 定時器任務 Hand…

寫字靜不下心?不如試試這些“笨方法”

夏天悄悄熱起來啦&#xff5e;有人說&#xff0c;想踏踏實實寫一會兒&#xff0c;但又靜不下心&#xff0c;耐不住性子&#xff0c;快收下這四個小錦囊&#xff0c;與古人一起笨拙精進吧&#xff01;    1、不論輸贏      每次課前&#xff0c;暄桐林曦老師總會強調&am…