23 lines
834 B
Matlab
23 lines
834 B
Matlab
dt = 0.01;
|
|
T = 1;
|
|
t = [0:dt:T]' ;
|
|
omega0 = 2 * pi /T;
|
|
N = length (t);
|
|
N2 = round (N/2);
|
|
x = ones(N, 1);
|
|
x (N2 + 1:N) = -1 * ones(N - N2, 1);
|
|
a(1) = 1/T * ( sum (x) * dt);
|
|
xfs = a(1) * ones( size(x));
|
|
for k = 1:10
|
|
ck = cos (k * omega0 * t); % cosine component
|
|
a(k + 1) = 2/T * ( sum (x.* ck) * dt);
|
|
sk = sin (k * omega0 * t); % sine component
|
|
b(k + 1) = 2/T * ( sum (x.* sk) * dt);
|
|
|
|
% Fourier series approximation
|
|
xfs = xfs + a(k + 1) * cos (k * omega0 * t) + b(k + 1) * sin (k * omega0 * t);
|
|
plot (t, x, '-' , t, xfs, ':' );
|
|
legend ( ' desired ' , ' approximated ' );
|
|
drawnow ;
|
|
pause (1);
|
|
end |