daniele@184: function plotcumcoherencebounds(obj) daniele@184: daniele@184: [d N] = size(obj.phi); daniele@184: daniele@184: mu1 = cumcoherence(obj,1); daniele@184: mu2 = cumcoherence(obj,2); daniele@184: mu1_min = (1:d)*sqrt((N-d)/(d*(N-1))); daniele@184: daniele@184: figure, subplot(2,1,1) daniele@184: hold on, grid on daniele@184: plot(1:d,mu1,'k-') daniele@184: plot(1:d,mu2,'k--') daniele@184: plot(1:d,mu1_min,'b-.') daniele@184: set(gca,'XScale','log','YScale','log'); daniele@184: axis tight daniele@184: ylabel('p-cumulative coherence') daniele@184: xlabel('k') daniele@184: legend('\mu_1(k)','\mu_2(k)','\mu_{1_{min}}(k)') daniele@184: daniele@184: % temp = conv(mu1,[1 1]); daniele@184: % kMax = find(temp<1,1,'last'); daniele@184: % title(['Worst case bound: k_{max} = ' num2str(kMax)]) daniele@184: % daniele@184: % % subplot(2,1,2) daniele@184: % p_BP_fails = exp(-1./(8*mu1(1)^2*(1:d))); daniele@184: % p_TH_fails = exp(-1./(128*mu2.^2)); daniele@184: % plot(1:d,p_BP_fails,'k-+'); daniele@184: % plot(1:d,p_TH_fails,'k-o'); daniele@184: % legend('P(BP fails)','P(TH fails)'); daniele@184: daniele@184: % % Plot cumulative coherence with lower and upper bounds daniele@184: % mumin = (1:d)*sqrt((N-d)/(d*(N-1))); daniele@184: % mumax = (1:d); daniele@184: % figure, daniele@184: % subplot(1,6,1:2) daniele@184: % hold on, grid on daniele@184: % plot(1,mumax(1),'k-s'); daniele@184: % plot(1,mu(1),'ko'); daniele@184: % plot(1,mumin(1),'k-d') daniele@184: % daniele@184: % daniele@184: % subplot(1,6,3:6) daniele@184: % hold on, grid on daniele@184: % plot(2:d,mumax(2:end),'k-s'); daniele@184: % plot(2:d,mu(2:end),'k-o'); daniele@184: % plot(2:d,mumin(2:end),'k-d'); daniele@184: % set(gca,'XScale','log','YScale','log'); daniele@184: % axis tight daniele@184: % xlabel('k'); daniele@184: % ylabel('\mu(k)'); daniele@184: % ylim([mumin(1) 10]) daniele@184: % daniele@184: % % Plot recovery bounds daniele@184: % plot(2:d,1-mu(1:d-1),'r-o') daniele@184: % plot(2:d,1-mumin(1:d-1)','r-d') daniele@184: % plot([2 d],[1/3 1/3],'b'); daniele@184: % legend('\mu_{max}(k)','\mu(k)','\mu_{min}(k)','Exact-Sparse \mu','Exact-Sparse \mu_{min}','Sparse'); daniele@184: daniele@184: daniele@184: % v = conv(mu,[1 1]); daniele@184: % ind = find(v<1, 1, 'last'); daniele@184: % daniele@184: % line([ind ind], [min(mu) max(mu)],'Color','red'); daniele@184: % title(['Minimum allowed sparsity (Tanner):' num2str(ind/obj.len)]); daniele@184: end