%sezione dati %parametri generali T0=4; dt=.01; kmax=30; %2*kmax + 1 termini dello sviluppo in serie %parametri segnale T=4; %periodo T1=2;%durata impulso principale negli esempi 1:5 %della base minore del trapezio in 6 %della parte a tempi positivi in 9 T2=exp(1)/2;%base maggiore trapezio in 6 %lato a tempi negativ del triangolo in 9 a=10;%coefficiente filtro in 7 e 8 pulse=10; %1: cos, 2: cos^2, 3: rect, 4: triangle, 5: manchester %6: trapezio di base maggiore T2 e base minore T1 e altezza 1; %7: esercizio 4d esponente a, periodo 2; %8: esercizio 4e esponente a, periodo 1; %9: triangolo da -T2 a T1 %10 periodo di sinusoide di periodo 1 con parte poi nulla %fine sezione dati k=-kmax:kmax; t=-T0:dt:T0; x=zeros(1,length(t)); switch pulse case 1 c=2*T1/(pi*T)*cos(pi*k*T1/T)./(1-(2*k*T1/T).^2); c(k==T/(2*T1))=T1/(2*T); c(k==-T/(2*T1))=T1/(2*T); case 2 c=1./(2*pi*k).*sin(pi*k*T1/T)./(1-(k*T1/T).^2); c(k==T/T1)=T1/(4*T); c(k==-T/T1)=T1/(4*T); c(k==0)=T1/(2*T); case 3 c=T1/T*sin(pi*k*T1/T)./(pi*k*T1/T); c(k==0)=T1/T; case 4 c0=T1/(2*T); c=c0*(sin(pi*k*c0)./(pi*k*c0)).^2; c(k==0)=c0; case 5 d=T1/(2*T); c=j*T1/T*(sin(pi*k*d)).^2./(pi*k*d); c(k==0)=0; case 6 d1=T1/(2*T); d2=T2/(2*T); c=1/T*2/(T2-T1)*((T2/2)^2*(sinc(k*d2)).^2-(T1/2)^2*(sinc(k*d1)).^2); case 7 T=2; c0=zeros(1,length(k)); c0(rem(abs(k),2)==1)=1; c=c0./(a+j*pi*k); case 8 T=1; c=1/2*sinc(k/2)./(a+j*pi*2*k); case 9 c=(T1+T2-T2*exp(-j*2*pi*k*T1/T)-T1*exp(+j*2*pi*k*T2/T))./(2*pi*k/T).^2/(T*T1*T2); c(k==0)=(T1+T2)/(4*pi); case 10 c=j*T1/T*sin(pi*k*T1/T).*exp(-j*pi*k*T1/T)./(1-(k*T1/T).^2)/pi; c(k==T/T1)=-j*T1/(2*T); c(k==-T/T1)=j*T1/(2*T); otherwise disp('error'); end stem(k,abs(c)) input('premere un tasto'); y=zeros(length(k),length(t)); for i=1:length(k), y(i,:)=c(i)*exp(j*2*pi/T*k(i)*t); x=x+y(i,:); end plot(t,real(x)) hold on h=input('quante armoniche vuoi visualizzare? '); [ax,bx]=find(k==0); plot(t,real(sum(y(bx-h:bx-1,:))+sum(y(bx+1:bx+h,:))+y(bx,:)),'r-.') hold off