⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fgmca.m

📁 GMCA Toolbox for Denoising, 2005年一篇有关基于MCA去噪的源代码
💻 M
字号:
function [piA,S] = fgmca(X,NbSources,nmax,Kmin)%  Sped-Up GMCA%%  INPUT - X : the sparse data - channels * samples%		 NbSources : number of sources to estimate%		 nmax : number of iterations (typically 100)%		 Kmin : last k-mad threshold (typically 3)%%  OUTPUT - piA : the pseudo inverse of the mixing matrix%		  S   : estimated/thresholded sparse sources%%  REQUIRED TOOLBOX :  Wavelab 850 - http://www-stat.stanford.edu/~wavelab/%  FACULTATIVE TOOLBOXES : MCALab - http://www.greyc.ensicaen.fr/~jfadili/demos/WaveRestore/downloads/mcalab.html%					CurveLab - http://www.curvelet.org/%%  Version : 7th of August 2007%		   CEA-Saclay / DAPNIA/SEDI-Sap%		   J.Bobin%%  [NbChannels,NbSamples] = size(X);for ll=1:NbChannels		X(ll,:) = X(ll,:) - mean(X(ll,:))*ones(size(X(ll,:)));end KS = 15;DKS = (KS-Kmin)/nmax;  %-- Should be changed - Typical values for an appropriate thresholdingAA = randn(NbChannels,NbSources);SEst_r = zeros(NbSources,NbSamples);for pp=1:nmax                        piA = inv(AA'*AA)*AA';                        SEst_r = piA*X;                        SigmaSources = zeros(1,NbSources);                        for ff = 1:NbSources                                   SEst_r(ff,:) = SEst_r(ff,:).*(abs(SEst_r(ff,:)) > KS*mad(SEst_r(ff,:)));                   SigmaSources(ff) = std(SEst_r(ff,:));            end                        indd = find(SigmaSources > 1e-9);                        if length(indd) > 0                                AA(:,indd) = X*SEst_r(indd,:)'*inv(SEst_r(indd,:)*SEst_r(indd,:)');                                        for ff = 1:length(indd)                                        	AA(:,indd(ff)) = AA(:,indd(ff))/norm(AA(:,indd(ff)));                                                                           end             end                                        KS = KS - DKS;endS = SEst_r;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -