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
|