annotate util/classes/@dictionary/plotcumcoherencebounds.m @ 184:8fc38e8df8c6 danieleb

Minor edits
author Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk>
date Fri, 27 Jan 2012 13:18:50 +0000
parents
children
rev   line source
daniele@184 1 function plotcumcoherencebounds(obj)
daniele@184 2
daniele@184 3 [d N] = size(obj.phi);
daniele@184 4
daniele@184 5 mu1 = cumcoherence(obj,1);
daniele@184 6 mu2 = cumcoherence(obj,2);
daniele@184 7 mu1_min = (1:d)*sqrt((N-d)/(d*(N-1)));
daniele@184 8
daniele@184 9 figure, subplot(2,1,1)
daniele@184 10 hold on, grid on
daniele@184 11 plot(1:d,mu1,'k-')
daniele@184 12 plot(1:d,mu2,'k--')
daniele@184 13 plot(1:d,mu1_min,'b-.')
daniele@184 14 set(gca,'XScale','log','YScale','log');
daniele@184 15 axis tight
daniele@184 16 ylabel('p-cumulative coherence')
daniele@184 17 xlabel('k')
daniele@184 18 legend('\mu_1(k)','\mu_2(k)','\mu_{1_{min}}(k)')
daniele@184 19
daniele@184 20 % temp = conv(mu1,[1 1]);
daniele@184 21 % kMax = find(temp<1,1,'last');
daniele@184 22 % title(['Worst case bound: k_{max} = ' num2str(kMax)])
daniele@184 23 %
daniele@184 24 % % subplot(2,1,2)
daniele@184 25 % p_BP_fails = exp(-1./(8*mu1(1)^2*(1:d)));
daniele@184 26 % p_TH_fails = exp(-1./(128*mu2.^2));
daniele@184 27 % plot(1:d,p_BP_fails,'k-+');
daniele@184 28 % plot(1:d,p_TH_fails,'k-o');
daniele@184 29 % legend('P(BP fails)','P(TH fails)');
daniele@184 30
daniele@184 31 % % Plot cumulative coherence with lower and upper bounds
daniele@184 32 % mumin = (1:d)*sqrt((N-d)/(d*(N-1)));
daniele@184 33 % mumax = (1:d);
daniele@184 34 % figure,
daniele@184 35 % subplot(1,6,1:2)
daniele@184 36 % hold on, grid on
daniele@184 37 % plot(1,mumax(1),'k-s');
daniele@184 38 % plot(1,mu(1),'ko');
daniele@184 39 % plot(1,mumin(1),'k-d')
daniele@184 40 %
daniele@184 41 %
daniele@184 42 % subplot(1,6,3:6)
daniele@184 43 % hold on, grid on
daniele@184 44 % plot(2:d,mumax(2:end),'k-s');
daniele@184 45 % plot(2:d,mu(2:end),'k-o');
daniele@184 46 % plot(2:d,mumin(2:end),'k-d');
daniele@184 47 % set(gca,'XScale','log','YScale','log');
daniele@184 48 % axis tight
daniele@184 49 % xlabel('k');
daniele@184 50 % ylabel('\mu(k)');
daniele@184 51 % ylim([mumin(1) 10])
daniele@184 52 %
daniele@184 53 % % Plot recovery bounds
daniele@184 54 % plot(2:d,1-mu(1:d-1),'r-o')
daniele@184 55 % plot(2:d,1-mumin(1:d-1)','r-d')
daniele@184 56 % plot([2 d],[1/3 1/3],'b');
daniele@184 57 % legend('\mu_{max}(k)','\mu(k)','\mu_{min}(k)','Exact-Sparse \mu','Exact-Sparse \mu_{min}','Sparse');
daniele@184 58
daniele@184 59
daniele@184 60 % v = conv(mu,[1 1]);
daniele@184 61 % ind = find(v<1, 1, 'last');
daniele@184 62 %
daniele@184 63 % line([ind ind], [min(mu) max(mu)],'Color','red');
daniele@184 64 % title(['Minimum allowed sparsity (Tanner):' num2str(ind/obj.len)]);
daniele@184 65 end