matlab中求模最大,matlab求取模極大值時出錯

本帖最后由 Nate_ 于 2016-4-17 15:57 編輯

points=1024 時,有波形輸出,但信號有5438個點。改為5438就不行。主程序:

%小波模極大值重構是采用的交替投影法

close all;

points=5438;? ?? ???level=4;? ? sr=360;? ?num_inter=6;? ?wf='db4';

%所處理數據的長度 分解的級數? ?抽樣率? ???迭代次數? ?? ?小波名稱

offset=0;

[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);

%計算小波分解系數和模極大序列

[signal,swa,swd,ddw,wpeak]=wave_peak(points,level,Lo_D,Hi_D,Lo_R,Hi_R,offset);

% signal:??原始信號;? ?? ? swa:小波概貌;??swd:小波細節;

% ddw:? ???局部極大位置; wpeak:小波變換的局部極大序列]

pswa=swa(level,:);??% pswa: 為待重建的信號

wframe=(wpeak~=0);

%迭代初始化

w0=zeros(1,points);

[a,d]=swt(w0,level,Lo_D,Hi_D);

w2=d;??% w2為待重建小波

for j=1:num_inter

w2=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);? ?? ?% Pv

end

pswa=iswt(swa(level,:),w2,Lo_R,Hi_R); % 計算重建信號

% 原信號和由模極大重建信號的比較

figure,

subplot(211)

plot(pswa(1:points));

subplot(212)

plot(signal(1:points),'r');

%分別計算重建小波以及原信號的信噪比

werr=w2-swd;

% 原信號的小波變換(swd)和重建后的小波變換(w2)的比較

figure,

for m=1:level

wsnr(m)=20*log10(norm(swd(m,:))/norm(werr(m,:)));

subplot(level+1,1,m);

plot(swd(m,:)),hold on,

plot(w2(m,:),'r');grid on;ylabel(strcat('j=',num2str(m))),axis tight;

end

err=pswa(1:points)-signal(1:points);

snr=20*log10(norm(signal)/norm(err))

子程序1:

function [inter]=P_gama(interval,lev,sr)

T=length(interval);

%該函數對一個區間進行Pgama投影,返回修正的區間

if T==2

inter=interval;

else

t=linspace(0,(T-1)/sr,T);

para=(([1,1;exp(2^(-lev)*t(T)),exp(-2^(-lev)*t(T))])\[interval(1),interval(T)]')';

alpha=para(1);

beta=para(2);

inter=alpha.*exp(2^(-lev).*t)+beta.*exp(-2^(-lev).*t);

end

子程序2:

function pc3inte=P_y(interval,len)

% 該函數對區間進行裁減即Py投影,返回裁剪后的區間信號

if sign(interval(1))==sign(interval(len))

interval=interval.*(sign(interval)==sign(interval(1)));

inte=interp1([1,len],[interval(1),interval(len)],(1:len),'linear');

interval=sign(interval(1))*(abs(inte)-(abs(inte)-abs(interval)).*((abs(inte)-abs(interval))>0));

else

sgn=sign(interval(len)-interval(1));

intemax=max([interval(1),interval(len)]);

intemin=min([interval(1),interval(len)]);

for i=1:len-2

if sign(interval(i+1)-interval(i))~=sgn

interval(i+1)=interval(i);

end

if interval(i+1)>intemax

interval(i+1)=intemax;

end

if interval(i+1)

interval(i+1)=intemin;

end

end

end

pc3inte=interval;

子程序3:

function??w2=Py_Pgama(w1,wpeak,wframe,level,sr)

% 該函數用于進行 Pgama 和 Py 投影

err=wpeak-w1.*(wpeak~=0);

w2=zeros(size(wpeak));

[r]=size(wpeak);

% 對每一級小波分別進行處理

for m=1:r

frame=find(wpeak(m,:));

num_interval=length(frame)-1;

% 先找到以模極大劃分的區間, 然后對每一區間進行Py投影

for j=1:num_interval

interval=w1(m,frame(j):frame(j+1));

len=length(interval);

if len>2

w1(m,frame(j):frame(j+1))=P_y(interval,len);

end

end

% 再逐一區間進行Pgama投影

for j=1:num_interval

interval=err(m,frame(j):frame(j+1));

if r==1

err(m,frame(j):frame(j+1))=P_gama(interval,level,sr);

else

err(m,frame(j):frame(j+1))=P_gama(interval,m,sr);

end

end

w2(m,:)=w1(m,:)+err(m,:);

end

子程序4:

function [signal,swa,swd,ddw,wpeak]=wave_peak(points,level,Lo_D,Hi_D,Lo_R,Hi_R,offset)

% 該函數用于讀取ecg信號,找到小波變換模極大序列

warning off;

ecgdata=load('ecg.txt');??%需要分析的信號

plot(ecgdata(1:points)),grid on,axis tight,axis([1,points,-90000,90000]);

signal=ecgdata(1:points)'+offset;

%??信號的小波變換,按級給出概貌和細節的波形

[swa,swd] = swt(signal,level,Lo_D,Hi_D);

figure;

subplot(level,1,1); plot(real(signal)); grid on;axis tight;

for i=1:level

subplot(level+1,2,2*(i)+1);

plot(swa(i,:)); axis tight;grid on;xlabel('time');

ylabel(strcat('a? ?',num2str(i)));

subplot(level+1,2,2*(i)+2);

plot(swd(i,:)); axis tight;grid on;

ylabel(strcat('d? ?',num2str(i)));

end

%求小波變換的模極大值及其位置

ddw=zeros(size(swd));

pddw=ddw;

nddw=ddw;

posw=swd.*(swd>0);

pdw=((posw(:,1:points-1)-posw(:,2:points))<0);

pddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0);

negw=swd.*(swd<0);

ndw=((negw(:,1:points-1)-negw(:,2:points))>0);

nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0);

ddw=pddw|nddw;

ddw(:,1)=1;

ddw(:,points)=1;

wpeak=ddw.*swd;

wpeak(:,1)=wpeak(:,1)+1e-10;

wpeak(:,points)=wpeak(:,points)+1e-10;

%按級給出小波變換模極大的波形

figure;

for i=1:level

subplot(level,1,i);

plot(wpeak(i,:)); axis tight;grid on;

ylabel(strcat('j=? ?',num2str(i)));

end

2016-4-17 15:52 上傳

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

dae9ba35fca1010202fd6692cf99fbde.png

a70cbf5f56cb187f20fb09bae08ed3de.gif

2016-4-17 15:47 上傳

點擊文件名下載附件

70.54 KB, 下載次數: 232

信號

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2016-4-17 15:48 上傳

點擊文件名下載附件

1.37 KB, 下載次數: 49

主程序

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2016-4-17 15:48 上傳

點擊文件名下載附件

368 Bytes, 下載次數: 47

子程序

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2016-4-17 15:48 上傳

點擊文件名下載附件

832 Bytes, 下載次數: 43

子程序

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2016-4-17 15:49 上傳

點擊文件名下載附件

885 Bytes, 下載次數: 43

子程序

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2016-4-17 15:49 上傳

點擊文件名下載附件

1.32 KB, 下載次數: 45

子程序

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

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

相關文章

stl向量_如何檢查C ++ STL中向量中是否存在元素?

stl向量Given a vector and an element to be searched in the vector. 給定一個向量和要在向量中搜索的元素。 To check whether an elements exists in a vector or not – we use find() function. find() function takes 3 arguments. 要檢查向量中是否存在元素 –我們使用…

java socket如何請求485協議_javaSE第十五部分 網絡編程(1)Socket和ServerSocket

網絡編程基礎知識C/S結構&#xff1a;全稱為Client/Server結構&#xff0c;是指客戶端和服務器結構。常見程序有&#xff31;&#xff31;、迅雷等軟件。B/S結構&#xff1a;全稱為Browser/Server結構&#xff0c;是指瀏覽器和服務器結構。常見瀏覽器有谷歌、火狐等。兩種架構各…

【分享】linux下u盤使用

2019獨角獸企業重金招聘Python工程師標準>>> linux下u盤使用 方案一&#xff1a; Linux不像Windows一樣&#xff0c;接上新硬件后可以自動識別&#xff0c;在Linux下無法自動識別新硬件的&#xff0c;需要手動去識別。USB移動存儲設備通常被識別為sda1&#xff0c;…

kotlin中判斷字符串_Kotlin程序刪除字符串中所有出現的字符

kotlin中判斷字符串Given a string and a character, we have to remove all occurrences of the character in given string. 給定一個字符串和一個字符&#xff0c;我們必須刪除給定字符串中所有出現的字符。 Example: 例&#xff1a; Input:string "includeHelp Del…

Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段進行靜態編織

我有一些JPA注釋字段,如下所示&#xff1a;Column(name "SOME_FIELD", updatable false, nullable false)private final String someField;當實體插入數據庫時??,這些字段存儲在數據庫中.它們無法進一步更新.對于Java編程語言,可以將這些字段視為final.使用Ecli…

python語言程序設計及醫學應用_Python語言程序設計(高等學校計算機專業規劃教材)...

第1章Python語言概述/1 1.1Python語言的發展1 1.1.1Python的起源1 1.1.2Python的發展2 1.2Python語言的特點2 1.2.1Python的特性2 1.2.2Python的缺點4 1.2.3Python與其他語言的比較5 1.3簡單的Python程序介紹5 1.4Python的程序開發工具8 1.4.1Python的版本選擇8 1.4.2Python的安…

swift 3.0 中使用 xib

文章寫于2016年9月底&#xff0c;Xcode 8&#xff0c;swift 3.0真是蛋疼&#xff0c;折騰了很長時間&#xff0c;試了網上很多教程&#xff0c;結果又莫名的可以了&#xff01; 1.方法和OC中一樣 將一個xib文件和一個ViewController類進行關聯的幾步操作&#xff1a; command &…

數字圖像處理圖像反轉的實現_使用8086微處理器反轉16位數字

數字圖像處理圖像反轉的實現Problem statement: 問題陳述&#xff1a; Write an assembly language program in 8086 microprocessor to reverse 16 bit number using 8 bits operation. 在8086微處理器中編寫匯編語言程序&#xff0c;以使用8位操作反轉16位數字。 Example: …

php猴子找大王算法,教程方法;php實現猴子選大王問題算法實例電腦技巧-琪琪詞資源網...

琪琪詞資源網-教程方法;php實現猴子選大王問題算法實例電腦技巧&#xff0c;以下是給大家帶來的教程方法;php實現猴子選大王問題算法實例&#xff0c;大家可以了解一下哦!下面為你介紹php實現猴子選大王問題算法實例。本文實例講述了php實現猴子選大王問題算法。分享給大家供大…

numpy 歸一化_NumPy 數據歸一化、可視化

僅使用 NumPy&#xff0c;下載數據&#xff0c;歸一化&#xff0c;使用 seaborn 展示數據分布。下載數據import numpy as npurl https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.datawid np.genfromtxt(url, delimiter,, dtypefloat, usecols[1])僅提取…

java虛擬機規范閱讀(三)異常

Java虛擬機里面的異常使用Throwable或其子類的實例來表示&#xff0c;拋異常的本質實際上是程序控制權的一種即時的、非局部&#xff08;Nonlocal&#xff09;的轉換——從異常拋出的地方轉換至處理異常的地方。絕大多數的異常的產生都是由于當前線程執行的某個操作所導致的&am…

puppeteer api_使用Node.js和puppeteer API從URL創建PDF文件

puppeteer apiWe will continue using Node.js and puppeteer which is a node library. As we saw in our last article, Puppeteer is a Node library developed by Google and provides a high-level API for developers. 我們將繼續使用Node.js和puppeteer(這是一個節點庫)…

python線程同步鎖_[python] 線程間同步之Lock RLock

為什么需要同步 同樣舉之前的例子&#xff0c;兩個線程分別對同一個全局變量進行加減&#xff0c;得不到預期結果&#xff0c;代碼如下&#xff1a; total 0 def add(): global total for i in range(1000000): total 1 def desc(): global total for i in range(1000000): t…

servlet的由來

2019獨角獸企業重金招聘Python工程師標準>>> 動靜態網頁技術 首先說下訪問網頁的大概過程&#xff1a; 你在瀏覽器中輸入網址&#xff0c;按下enter鍵&#xff0c;此時瀏覽器代你做了很多事&#xff0c;簡要說為&#xff1a;將你輸入的這個網址作為目的地參數&#…

php header 文件大小,php獲取遠程文件大小及信息的函數(head_php

php獲取遠程文件大小及信息的函數(header頭信息獲取)阿里西西Alixixi.com開發團隊在做一個客戶系統時&#xff0c;需要做遠程下載的功能&#xff0c;并實時顯示進度條效果。所以&#xff0c;需要預先讀取遠程文件的大小信息&#xff0c;然后做為實時下載進度條的參數。功能函數…

Java ObjectInputStream readUnsignedShort()方法(帶示例)

ObjectInputStream類readUnsignedShort()方法 (ObjectInputStream Class readUnsignedShort() method) readUnsignedShort() method is available in java.io package. readUnsignedShort()方法在java.io包中可用。 readUnsignedShort() method is used to read 2 bytes (i.e. …

python中info的用法_Python pandas.DataFrame.info函數方法的使用

DataFrame.info(self, verboseNone, bufNone, max_colsNone, memory_usageNone, null_countsNone) [source] 打印DataFrame的簡要摘要。 此方法顯示有關DataFrame的信息&#xff0c;包括索引dtype和列dtype&#xff0c;非空值和內存使用情況。 參數&#xff1a;verbose &#x…

第四次作業 孫保平034 李路平029

用C編寫一個學生成績管理系統 1、可以實現以下功能&#xff1a; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; 2、用鏈表存儲信息 * 程序頭部的注釋結束 3、約定的規范&#xff1a; 1界面設計簡介&#xff0c;人性化…

php serialize error at offset,PHP Notice: unserialize(): Error at offset XX of XX bytes

之前同事在本地開發的時候&#xff0c;出現一個錯誤&#xff0c;如下圖所示&#xff1a;字面意思就是反序列化錯誤&#xff0c;由此bug引申出來序列化和反序列化得應用&#xff0c;以及php array當key為string類型的數字值時&#xff0c;會發生什么情形。先來看序列化$str [1 …

Java ClassLoader setClassAssertionStatus()方法與示例

ClassLoader類setClassAssertionStatus()方法 (ClassLoader Class setClassAssertionStatus() method) setClassAssertionStatus() method is available in java.lang package. setClassAssertionStatus()方法在java.lang包中可用。 setClassAssertionStatus() method is used …