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.mzph.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 …