close all clear all clc Tp = 5; % periodo d = 0.4; % duty cycle A = 2; % ampiezza onda om0 = 2*pi/Tp; % omega zero N = 50; % numero di armoniche considerate nel troncamento T = 0.01; % passo di campionamento % segnale originario x(t) [t, x] = ondaquadra(A,Tp,d,T); % stampa segnale figure plot(t,x,'r-'); xlabel('t') ylabel('x(t)') title(['Serie di Fourier troncata, N=', num2str(N)]) grid %% %%%%%%%%%%%%%%%%%%%%%% serie troncata con coefficienti ak % 1) calcolare i coefficienti della serie di Fourier k = -N:N; ak = A*d*sinc(k*d); % 2) calcolare la serie troncata xn = zeros(size(t)); for i = 1:length(k) xn = xn + ak(i)*exp(1i*k(i)*om0*t); end xn = real(xn); % 3) plottare il segnale hold on plot(t,xn); hold off legend('onda quadra','serie troncata') %% %%%%%%%%%%%%%%%%%%%%%% serie troncata con coefficienti ak % 1) calcolare numericamente i coefficienti della serie di Fourier bk = zeros(size(k)); for i = 1:length(k) bk(i) = T/Tp*sum(x.*exp(-1j*k(i)*om0*t)); end % 2) calcolare la nuova serie troncata xnb = zeros(size(t)); for i = 1:length(k) xnb = xnb + bk(i)*exp(1i*k(i)*om0*t); end xnb = real(xnb); % 3) plottare il segnale hold on plot(t,xnb); hold off legend('onda quadra','serie troncata ak','serie troncata bk') % 4) illustrare la differenza tra i coefficienti ak e bk figure subplot(2,1,1) stem(k,real(bk)) hold on stem(k,real(ak)) hold off title('parte reale') grid legend('coefficienti bk','coefficienti ak') subplot(2,1,2) stem(k,imag(bk)) hold on stem(k,imag(ak)) hold off grid title('parte immaginaria')