% set up parameters N = 64; %compute transform matrix and inverse T = dct(eye(N)); Ti = inv(T); % set up signal and transform t = ((0:(N-1))/N); %X = sin(2*pi*5.2*t); %X = (1/N)*[1:(N/2),(N/2):(-1):1]-0.25; % linear tent X = rand(size(t)); X = X(:); % force a column vector Xr = zeros(size(X)); % initialize a reconsruction vector Y = T*X; %graph window parameters mx = max(T(:)); mn = min(T(:)); mxi = max(Ti(:)); mni = min(Ti(:)); mxX = max(X); mnX = min(X); mxY = max(Y); mnY = min(Y); eps = 0.1; figure(1) for i = 1:N D = T; D(i,:)= mn*ones(1,N); R = T(i,:); subplot(2,3,1) imshow(D,[]); title('Analysis matrix') subplot(2,3,2) plot(1:N,R,1:N,X); axis([1,N,min([mn,mnX]),max([mx,mxX])]); title('Analysis waveform and signal') subplot(2,3,3) plot(1:N,Y,'b.',i,Y(i),'r+'); axis([1,N,mnY-eps,mxY+eps]); title('Transform and DCT coefficient') D=Ti; D(:,i)= mni*ones(N,1); C = Ti(:,i); Xr = Xr+Y(i)*C; subplot(2,3,4) imshow(D,[]); title('Synthesis matrix') subplot(2,3,5) plot(1:N,Ti(:,i)); axis([1,N,mni-eps,mxi+eps]); title('Synthesis waveform') subplot(2,3,6) plot(1:N,Xr,'b',1:N,Y(i)*C,'r'); axis([1,N,mnX-eps,mxX+eps]); title('Partially reconstructed signal and current term') drawnow; pause(1) end;