zoukankan      html  css  js  c++  java
  • 小波分解后如何把相应系数置零达到去噪目的再重构信号

    http://www.ilovematlab.cn/thread-295233-1-1.html

    比如说一正弦信号x=sin(5*pi*t),在这个信号里叠加另一个信号y=0.2*sin(10*pi*t),sig=x+y,那对sig进行小波分解的话,是否可以判断出y信号出现某个位置,然后把该位置的系数置零后再重构信号?这样的话如何进行?


    clc 

    close all

    t=0:0.05:20;

    x=3*sin(0.2*pi*t);%原始正弦信号

    ns=0.2*sin(9*pi*t);

    %N=length(t)

    %ns=[zeros(1,100),0.2*randn(1,200),zeros(1,101)];%区间为101-201的白噪声

    %ns=zeros(1,401);

    sig=x+ns;%叠加了噪声的信号

    figure(1)

    subplot(311)

    plot(x);

    title('原始信号')

    subplot(312)

    plot(ns);

    title('噪声')

    subplot(313)

    plot(sig);

    title('有噪信号')

    [c,l]=wavedec(sig,4,'db4');%对有噪信号用db4小波函数进行4层分解

    a1=appcoef(c,l,'db4',1);%提取第一层的近似分量

    d1=detcoef(c,l,1);%提取第一层的细节分量

    a2=appcoef(c,l,'db4',2);%提取第二层的近似分量

    d2=detcoef(c,l,2);%提取第二层的细节分量

    a3=appcoef(c,l,'db4',3);%提取第三层的近似分量

    d3=detcoef(c,l,3);%提取第三层的细节分量

    a4=appcoef(c,l,'db4',4);%提取第四层的近似分量

    d4=detcoef(c,l,4);%提取第四层的细节分量

    %画出每一层的近似分量和细节分量,共四层

    figure(2)

    subplot(421)

    plot(a1)

    title('第一层的近似分量')

    subplot(422)

    plot(d1)

    title('第一层的细节分量')

    subplot(423)

    plot(a2)

    title('第二层的近似分量')

    subplot(424)

    plot(d2)

    title('第二层的细节分量')

    subplot(425)

    plot(a3)

    title('第三层的近似分量')

    subplot(426)

    plot(d3)

    title('第三层的细节分量')

    subplot(427)

    plot(a4)

    title('第四层的近似分量')

    subplot(428)

    plot(d4)

    title('第四层的细节分量')

    %进行重构

    dd1=zeros(size(d1));%将第一层的细节分量置零

    dd2=zeros(size(d2));%将第二层的细节分量置零

    dd3=zeros(size(d3));%将第三层的细节分量置零

    dd4=zeros(size(d4));%将第四层的细节分量置零

    c1=[a4 dd4 dd3 dd2 dd1];%重构小波分解向量,所有的细节分量变为零

    aa1=waverec(c1,l,'db4');%重构信号

    figure(3)

    plot(aa1)

    title('一到四层的细节分量置零后的重构信号')

    c2=[a4 d4 dd3 dd2 dd1];%重构小波分解向量,其中第一、三、四层的细节分量被置零

    aa2=waverec(c2,l,'db4');%重构信号

    figure(4)

    plot(aa2)

    title('一到三层的细节分量置零后的重构信号')

    c3=[a4 d4 dd3 d2 dd1];%重构小波分解向量,其中第一、三层的细节分量被置零

    aa3=waverec(c3,l,'db4');%重构信号

    figure(5)

    plot(aa3)

    title('一、三层的细节分量置零后的重构信号')

    c4=[a4 d4 d3 d2 dd1];%重构小波分解向量,其中第一的层细节分量被置零

    aa4=waverec(c4,l,'db4');%重构信号

    figure(6)

    plot(aa4)

    title('第一层的细节分量置零后的重构信号')

    c5=[a4 d4 d3 dd2 d1];%重构小波分解向量,其中第二的层细节分量被置零

    aa5=waverec(c5,l,'db4');%重构信号

    figure(7)

    plot(aa5)

    title('第二层的细节分量置零后的重构信号')


  • 相关阅读:
    203. Remove Linked List Elements
    python练习小程序
    五十音练习小软件
    CocosCreator生命游戏
    一个swift下载程序
    用excel做一幅像素画
    翻译一篇SpiderMonkey GC的文章
    unity-3d拼图游戏
    NDK编译Python2.7.5
    git命令简图
  • 原文地址:https://www.cnblogs.com/gisalameda/p/12840560.html
Copyright © 2011-2022 走看看