function [y energy] = fseries(t,func,M,T)
if (nargin<4)
T = 1.0;
end
if (nargin<3)
M = 50;
end
f = 1/T;
c0 = func(0);
if (isnan(c0))
c0 = func(1e-5);
end
energy = c0*conj(c0);
y = ones(size(t))*c0;
for k=1:M
arg = 2*pi*k*f*t;
ck = func(k);
ckm = func(-k);
energy = energy + ck*conj(ck) + ckm*conj(ckm);
y = y + (ck+ckm)*cos(arg)+ j*(ck-ckm)*sin(arg);
end
yi = imag(y);
tst = max(abs(yi));
y = real(y);
if (nargout<1)
fprintf('energy (freq) %g (time) %g\n',energy, trapz(y.*y)/(length(t)-1));
plot(t,y,'k','LineWidth',2);
xlabel('time');
ylabel('signal level');
if (tst>1e-5)
hold on;
plot(t,yi);
hold off;
end
end