function f1=DCT2(x)

% berechnet die DCT-II des Vectors x mit Skalierung
% d.h. f1=sqrt(N)*C_N^II* x


[L,N]=size(x); %x Zeilenvektor der LŠnge N
%Bringe x auf einen Vektor mit ZweierpotenzlŠnge
t=floor(log2(N));
N2=2^t*2;
if N>N2/2 y=zeros(N2); 
else N2=N; y=zeros(N2);
end	
for j=1:N y(j)=x(j); end;

% rekursiver Algorithmus	
	
if N2==2 f1(1)=y(1)+y(2);
        f1(2)=y(1)-y(2);
	end;

if N2>=4  N3=N2/2;
          for j=1:N3  u(j)=y(j)+y(N2+1-j);
			          v(j)=y(j)-y(N2+1-j);
				  end;
				  
			  
v1=DCT2(u);
v2=DCT4(v);

v1=[v1,v2];

for j=1:N3 f1(2*j-1)=v1(j);
	       f1(2*j)=v1(N3+j);
	   end;
	   end;
	   

	