# HG changeset patch # User Daniele Barchiesi # Date 1321534536 0 # Node ID 989b7d78e1c8c035f8bc05a8c58ad884d456ff00 # Parent 4ea4badb2266a788405d71a75fa7fc48a06f41a5 added support for p-cumulative coherence diff -r 4ea4badb2266 -r 989b7d78e1c8 util/classes/@dictionary/cumcoherence.m --- a/util/classes/@dictionary/cumcoherence.m Thu Nov 17 11:22:17 2011 +0000 +++ b/util/classes/@dictionary/cumcoherence.m Thu Nov 17 12:55:36 2011 +0000 @@ -1,19 +1,30 @@ -function mu = cumcoherence(obj) +function mu = cumcoherence(obj,p) +% Calculates the p-cumulative coherence of the dictionary, defined as +% \mu_p(k) = max_|I|=k{max_j\notin I{(\sum_i \in I}|<\phi_i,\phi_j>|^p)^1/p} +% +% INPUT +% obj: dictionary object +% p: power (default 1) +% +% OUTPUT +% mu: p-cumulative coherence +if ~exist('type','var') || isempty(p), p = 1; end + obj = normalize(obj); [M N] = size(obj.phi); mu = zeros(M,1); for m=1:M - c = zeros(N); - for i=1:N - c(:,i) = abs(obj.phi'*obj.phi(:,i)); - c(i,i) = 0; - end - c = sort(c,'descend'); - c = c(1:m,:); - if m==1 - mu(m) = max(c); - else - mu(m) = max(sum(c)); - end + c = zeros(N); + for i=1:N + c(:,i) = abs(obj.phi'*obj.phi(:,i)).^p; + c(i,i) = 0; + end + c = sort(c,'descend'); + c = c(1:m,:); + if m==1 + mu(m) = max(c^(1/p)); + else + mu(m) = max(sum(c)^(1/p)); + end end end