function B = collapseA global A global C [n,n,T] = size(A); B = zeros(2,2,T); for t=1:T B(:,:,t) = collapse_t(A(:,:,t),0); end B = B + realmin; return function B = collapse_t(A,pi) [n,n] = size(A); p1 = A(:,1); P1 = repmat(p1,[1 n]); dd = sum(abs(A-P1),1); [a,b] = max(dd); % cluster states as closer to either 1 or b S1 = []; S2 = []; for i=1:n d1 = sum(abs(A(:,1)-A(:,i))); d2 = sum(abs(A(:,b)-A(:,i))); if d1 < d2 S1(end+1) = i; else S2(end+1) = i; end end B = zeros(2,2); top = sum(A(S1,:),1); bot = sum(A(S2,:),1); %keyboard B(1,1) = top(1); B(2,1) = 1-B(1,1); B(1,2) = mean(top(b)); B(2,2) = 1-B(1,2); return function B = OLD3collapse_t(A,pi) global h0 [n,n] = size(A); p1 = A(:,1); P1 = repmat(p1,[1 n]); dd = sum(abs(A-P1),1); [a,b] = max(dd); B = zeros(2,2); B(1,1) = A(1,1); B(2,1) = 1-B(1,1); p11 = B(1,1); if p11>.5 p10 = max(0,p11-h0); else p10 = min(1,p11+h0); end B(1,2) = p10; B(2,2) = 1-B(1,2); return function B = OLD2collapse_t(A,pi) [n,n] = size(A); p1 = A(:,1); P1 = repmat(p1,[1 n]); dd = sum(abs(A-P1),1); [a,b] = max(dd); % cluster states as closer to either 1 or b S1 = []; S2 = []; for i=1:n d1 = sum(abs(A(:,1)-A(:,i))); d2 = sum(abs(A(:,b)-A(:,i))); if d1 < d2 S1(end+1) = i; else S2(end+1) = i; end end B = zeros(2,2); top = sum(A(S1,:),1); bot = sum(A(S2,:),1); %keyboard B(1,1) = mean(top(S1)); B(2,1) = 1-B(1,1); B(1,2) = mean(top(S2)); B(2,2) = 1-B(1,2); return function B = OLDcollapse_t(A,pi) [n,n] = size(A); p1 = A(:,1); P1 = repmat(p1,[1 n]); dd = sum(abs(A-P1),1); [a,b] = max(dd); B(1,1) = A(1,1); %B(2,1) = 1-B(1,1); B(2,1) = A(b,1); B(1,2) = A(1,b); %B(2,2) = 1-B(1,2); B(2,2) = A(b,b); B=pnormdim(B,1); return