n = 200; K = spdiags([-ones(n,1), ones(n,1)],0:1, n,n); K(end,end)=0; n1=40; n2 = 60; n3 = 100; q(1:n1) = linspace(1/n1,1,n1); q(n1+1:n1+n2) = linspace(1-2/n2,-1,n2); q(1+n1+n2:n1+n2+n3) = linspace(-1+1/n3,0,n3); q = reshape(q, [n,1]); u = K'*q; isSubgradient = @(u,K,q)((abs(sum(abs(K*u))-sum((K'*q).*u))<0.000001) & (max(abs(q))<=1)); isSubgradient(u,K,q) figure, plot(u./(max(abs(u))), 'b-', 'linewidth',3), hold on, plot(q, 'r--', 'linewidth',3) leg = legend('q', 'u=K^T q'); set(leg, 'fontsize', 16);