function demo_mod_analogiche
	
% 	modul = 'AM';ka = 0.3;
% 	modul = 'DSB-SC';
% 	modul = 'SSB';
	modul = 'PM';
% 	modul = 'FM';
	
	% qualita' della stima spettrale
	df_max = 1;
	
	% parametri dell'onda modulante
	fm = 10;
	Am = 1;
	phim = 2*pi*rand;
	
	% parametri della portante
	fc = 100;
	Ac = 1;
	phic = 2*pi*rand;
	
	% parametri della modulazione: I_FM = kf*Am/fm;
	%I_FM = 0.5;
	I_FM = 4;
	%I_FM = 12;
	BT = 2*fm*(1+I_FM); % formula di Carson
	kf = I_FM*fm/Am;
	fprintf('kf: %g  BT (Carson): %g\n',kf,BT);
	
	% frequenza di campionamento
	fs = 16*(fc+1.15*BT/2);
	Ts = 1/fs;
	
	% durata dell'osservazione
	T = 2*ceil(fs*fm*Ts/df_max/2)/fm;
	N = 2^ceil(log2(T/Ts));
	fprintf('N: %d fs: %g df: %g\n',N,fs,fs/N);
	t = (0:N-1)*Ts;
	
	% per l'analisi spettrale
	w = kaiser(N,10).';
	Nf = 8*N;
	df = fs/Nf;
	f = (-Nf/2:Nf/2-1)*df;
	
	% segnale modulante
	m = Am*cos(2*pi*fm*t+phim);
	m_hil = Am*sin(2*pi*fm*t+phim);
	m_int = Am/(2*pi*fm)*sin(2*pi*fm*t+phim);
	
	% portante non modulata
	c = Ac*cos(2*pi*fc*t+phic);
	
	% segnale modulato
	switch modul
		case 'AM'
			s = Ac*(1+ka*m).*cos(2*pi*fc*t+phic);
		case 'DSB-SC'
			s = Ac*m.*cos(2*pi*fc*t+phic);
		case 'SSB'
			s = Ac*m.*cos(2*pi*fc*t+phic) ...
				- Ac*m_hil.*sin(2*pi*fc*t+phic);
		case 'PM'
			kp = kf*Am/fm;s = Ac*cos(2*pi*fc*t+phic+kp*m);
		case 'FM'
			s = Ac*cos(2*pi*fc*t+phic+2*pi*kf*m_int);
	end
	S = fftshift(fft([s.*w,zeros(1,Nf-N)]))*Ts;
	
	% plot
	subplot(2,1,1)
	hold off
	plot(t,m,'r')
	hold on
	plot(t,s)
	set(gca,'XLim',[0 2/fm]);
	
	subplot(2,1,2)
	plot(f,20*log10(abs(S)))
	set(gca,'XLim',fc+BT*[-1 1])
	set(gca,'YLim',20*log10(max(abs(S)))+[-25,5])
end
