% Signal. n = 1024; % Signal length. [x,comps] = GenSignal('Bumps-GCosine',n); xdct = comps(:,1); xwav = comps(:,2); % Observed signal = part1 + part2 + sigma*awgn PSNR = 20; sigma = std(x(:))*10^(-PSNR/20); y = x + sigma*randn(size(x)); % Representation dictionary (here local DCT + UDWT). qmf=MakeONFilter('Symmlet',6); dict1='DCT';pars11=1;pars12=0;pars13=0; dict2='UDWT';pars21=2;pars22=qmf;pars23=0; dicts=MakeList(dict1,dict2); pars1=MakeList(pars11,pars21); pars2=MakeList(pars12,pars22); pars3=MakeList(pars13,pars23); %dicts = MakeList('DCT','DST','UDWT'); %pars1 = MakeList(1,1,2); %pars2 = MakeList(0,0,qmf); %pars3 = MakeList(0,0,0); % No inpainting => mask of ones or empty mask. mask = []; % Call the MCA. itermax = 100; tvregparam = 0; tvcomponent = 0; expdecrease = 1; lambdastop = 4; display = 1; [parts,options]=MCA_Bcr(y,dicts,pars1,pars2,pars3,itermax,tvregparam,tvcomponent,expdecrease,lambdastop,mask,[],display); options.inputdata = 'Input signal: Bumps + Cosine generated by GenSignal'; options [ST,I] = dbstack; name=eval(['which(''' ST(1).name ''')']); eval(sprintf('save %s options -V6',[name(1:end-2) 'metadata'])); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Plot recovered signals. % Display results. figure; set(gcf,'Name','MCA 1D Cosine + Bumps','NumberTitle','off'); subplot(411); plot(y);hold on;plot(x,'--');hold off;axis tight; legend('Noisy','Original'); xlabel('Time'); title(sprintf('(a) \n Noisy signal PSNR_{in}=%g dB',PSNR)); subplot(412); plot(sum(parts,2));hold on;plot(x,'--','LineWidth',2);hold off;axis tight; legend('Recovered','Original','Location','Best'); xlabel('Time'); title(sprintf('(b) \n Denoised MCA PSNR=%.3g dB',psnr(x,sum(parts,2)))); subplot(413); plot(parts(:,1));hold on;plot(xdct,'--','LineWidth',2);hold off;axis tight legend('Recovered','Original'); xlabel('Time'); title(sprintf('(c) \n Local Cosines PSNR=%.3g dB',psnr(xdct,parts(:,1)))); subplot(414); plot(parts(:,2));hold on;plot(xwav,'--b','LineWidth',2);hold off;axis tight legend('Recovered','Original','Location','Best'); xlabel('Time'); title(sprintf('(d) \n Bumps PSNR=%.3g dB',psnr(xwav,parts(:,2))));