• qazplm123oop
    了解作者
  • matlab
    开发工具
  • 8KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 31
    下载次数
  • 2020-09-27 14:33
    上传日期
小波去噪,不同小波基,多层小波分解,软硬阈值去噪。
小波去噪.zip
  • 小波去噪
  • xiaoboquzao2.m
    1014B
  • Untitled4.m
    2.8KB
  • IWT.m
    282B
  • xiaoboquzao.m
    690B
  • VMD.m
    4.5KB
  • xiaoboquzao4.m
    2.7KB
  • xiaoboquzao3.m
    846B
  • xiaxiede.m
    2.7KB
内容介绍
function [u, u_hat, omega] = VMD(signal, alpha, tau, K, DC, init, tol) % Variational Mode Decomposition % Authors: Konstantin Dragomiretskiy and Dominique Zosso % zosso@math.ucla.edu --- http://www.math.ucla.edu/~zosso % Initial release 2013-12-12 (c) 2013 % % Input and Parameters: % --------------------- % signal - the time domain signal (1D) to be decomposed % alpha - the balancing parameter of the data-fidelity constraint % tau - time-step of the dual ascent ( pick 0 for noise-slack ) % K - the number of modes to be recovered % DC - true if the first mode is put and kept at DC (0-freq) % init - 0 = all omegas start at 0 % 1 = all omegas start uniformly distributed % 2 = all omegas initialized randomly % tol - tolerance of convergence criterion; typically around 1e-6 % % Output: % ------- % u - the collection of decomposed modes % u_hat - spectra of the modes % omega - estimated mode center-frequencies % % When using this code, please do cite our paper: % ----------------------------------------------- % K. Dragomiretskiy, D. Zosso, Variational Mode Decomposition, IEEE Trans. % on Signal Processing (in press) % please check here for update reference: % http://dx.doi.org/10.1109/TSP.2013.2288675 %---------- Preparations % Period and sampling frequency of input signal save_T = length(signal); fs = 1/save_T; % extend the signal by mirroring T = save_T; f_mirror(1:T/2) = signal(T/2:-1:1); f_mirror(T/2+1:3*T/2) = signal; f_mirror(3*T/2+1:2*T) = signal(T:-1:T/2+1); f = f_mirror; % Time Domain 0 to T (of mirrored signal) T = length(f); t = (1:T)/T; % Spectral Domain discretization freqs = t-0.5-1/T; % Maximum number of iterations (if not converged yet, then it won't anyway) N = 500; % For future generalizations: individual alpha for each mode Alpha = alpha*ones(1,K); % Construct and center f_hat f_hat = fftshift((fft(f))); f_hat_plus = f_hat; f_hat_plus(1:T/2) = 0; % matrix keeping track of every iterant // could be discarded for mem u_hat_plus = zeros(N, length(freqs), K); % Initialization of omega_k omega_plus = zeros(N, K); switch init case 1 for i = 1:K omega_plus(1,i) = (0.5/K)*(i-1); end case 2 omega_plus(1,:) = sort(exp(log(fs) + (log(0.5)-log(fs))*rand(1,K))); otherwise omega_plus(1,:) = 0; end % if DC mode imposed, set its omega to 0 if DC omega_plus(1,1) = 0; end % start with empty dual variables lambda_hat = zeros(N, length(freqs)); % other inits uDiff = tol+eps; % update step n = 1; % loop counter sum_uk = 0; % accumulator % ----------- Main loop for iterative updates while ( uDiff > tol && n < N ) % not converged and below iterations limit % update first mode accumulator k = 1; sum_uk = u_hat_plus(n,:,K) + sum_uk - u_hat_plus(n,:,1); % update spectrum of first mode through Wiener filter of residuals u_hat_plus(n+1,:,k) = (f_hat_plus - sum_uk - lambda_hat(n,:)/2)./(1+Alpha(1,k)*(freqs - omega_plus(n,k)).^2); % update first omega if not held at 0 if ~DC omega_plus(n+1,k) = (freqs(T/2+1:T)*(abs(u_hat_plus(n+1, T/2+1:T, k)).^2)')/sum(abs(u_hat_plus(n+1,T/2+1:T,k)).^2); end % update of any other mode for k=2:K % accumulator sum_uk = u_hat_plus(n+1,:,k-1) + sum_uk - u_hat_plus(n,:,k); % mode spectrum u_hat_plus(n+1,:,k) = (f_hat_plus - sum_uk - lambda_hat(n,:)/2)./(1+Alpha(1,k)*(freqs - omega_plus(n,k)).^2); % center frequencies omega_plus(n+1,k) = (freqs(T/2+1:T)*(abs(u_hat_plus(n+1, T/2+1:T, k)).^2)')/sum(abs(u_hat_plus(n+1,T/2+1:T,k)).^2); end % Dual ascent lambda_hat(n+1,:) = lambda_hat(n,:) + tau*(sum(u_hat_plus(n+1,:,:),3) - f_hat_plus); % loop counter n = n+1; % converged yet? uDiff = eps; for i=1:K uDiff = uDiff + 1/T*(u_hat_plus(n,:,i)-u_hat_plus(n-1,:,i))*conj((u_hat_plus(n,:,i)-u_hat_plus(n-1,:,i)))'; end uDiff = abs(uDiff); end %------ Postprocessing and cleanup % discard empty space if converged early N = min(N,n); omega = omega_plus(1:N,:); % Signal reconstruction u_hat = zeros(T, K); u_hat((T/2+1):T,:) = squeeze(u_hat_plus(N,(T/2+1):T,:)); u_hat((T/2+1):-1:2,:) = squeeze(conj(u_hat_plus(N,(T/2+1):T,:))); u_hat(1,:) = conj(u_hat(end,:)); u = zeros(K,length(t)); for k = 1:K u(k,:)=real(ifft(ifftshift(u_hat(:,k)))); end % remove mirror part u = u(:,T/4+1:3*T/4); % recompute spectrum clear u_hat; for k = 1:K u_hat(:,k)=fftshift(fft(u(k,:)))'; end end
评论
    相关推荐
    • 小波去噪.rar
      小波去噪的ViruShrink和BayesShrink算法实现,含源代码及LaTeX报告
    • 信号处理 小波去噪
      matlab实现小波去噪,对信号处理,提高信号信噪比有效果。
    • 小波去噪程序
      小波去噪函数,小波去噪matlAB程序,小波去噪常用的阈值函数,新的阈值函数
    • 小波去噪 matlab
      包括以下方法: BivaShrink方法、模型1、模型2、模型3(TrivaShrink方法)、BayesShrink方法、 LAWMLShrink方法的DWT实现和DT_CWT实现。 包括以下方法: VisuShrink方法、SUREShrink方法、BayesShrink方法、...
    • 小波去噪算法
      小波去噪,中值去噪,图像质量分析,图像还原
    • 小波去噪程序
      对给定图像添加噪声,利用经典小波方法进行去噪,包括Donoho小波,自适应滤波以及中值滤波滤波等多种滤波进行去噪处理,并对比和算法的PSNR。
    • 小波去噪 MATLAB
      利用小波分解对含噪声图像进行阈值去噪,重构得到新图像。将图像分解后的高频部分的振幅进行软阈值去噪 ,并将试验结果与实数小波去噪结果相比较。结果表明该方法既能有效地去除噪声 ,又能保持图像的大量原始信息
    • matlab小波去噪
      本文件夹的程序是基于LeventCodes和WaveLab802平台作的,matlab小波去噪
    • 小波去噪资料
      基于相关模型的平稳小波维纳滤波器图像去噪算法.pdf 基于小波变换的自适应图像去噪方法的研究.pdf
    • matlab 小波去噪
      这个采用了小波去噪算法中的阈值去噪算法,阈值去噪算法思路简单,可根据信号特点选择不同的阈值函数,灵活性较高,且去噪效果好。