function [a0,a,b,t,z,f,s,F,h1,h2] =piirrafourier3(xx,yy,vk,N)
%Etsii funktion yy=f(xx) Fourier-kertoimet ja
%Fourier-sarjan f(x), sekä Fourier-sarjan osasummat s.
%
%Piirtää lisäksi verhokäyrän (xx,vk)
%
%Kutsu funktiota vaikkapa komennolla
%
%t=linspace(-pi,pi,1000);
%z=t.^2.*sin(7*t);
%vk=t.^2;
%[a0,a,b,x,y,f,s,F,h1,h2] =piirrafourier3(t,z,vk,10);
%
%Videon suppenemisesta (katso 5 kertaa, 1 kuva sekunnissa) voit katsoa vaikkapa komennolla
%
%figure('units','normalized','outerposition',[0 0 1 1])
%movie(F,5,1)

xmin=xx(1);
xmax=xx(end);
t=linspace(xmin,xmax,1000);
z=interp1(xx,yy,t);

a0=2*mean(z);
for k=1:N
a(k)=2*mean(z.*cos(k*t));
b(k)=2*mean(z.*sin(k*t));
end

h1=figure; hold on
plot(1:N,a)
plot(1:N,b,'r')
title('Fourier-kertoimet')
legend('a_k','b_k')
xlabel('k')

for k=1:N
Sin(k,:)=sin(k*t);
Cos(k,:)=cos(k*t);
end
f=mean(z)+a*Cos+b*Sin;
error=f-z;
h2=figure; hold on
nimi_sarja=plot(t,f);
plot(t+2*pi,f)
plot(t-2*pi,f)
nimi_funktio=plot(t,z,'k');
plot(t+2*pi,z,'k')
plot(t-2*pi,z,'k')

nimi_verho=plot(t,vk,'r:');
plot(t+2*pi,vk,'r:')
plot(t-2*pi,vk,'r:')
plot(t,-vk,'r:')
plot(t+2*pi,-vk,'r:')
plot(t-2*pi,-vk,'r:')

legend([nimi_sarja,nimi_funktio,nimi_verho],'sarja','funktio','verhokäyrä')

figure('units','normalized','outerposition',[0 0 1 1]);

for k=1:N
s(k,:)=mean(z)+a(1:k)*Cos(1:k,:)+b(1:k)*Sin(1:k,:);
hold on
plot(t,z,'k')
plot(t,s(k,:));
F(k)=getframe;
clf
end
close
end

