clear all;
format long;
'Standardní návrh s využitím vestavìné funkce v prostøedí Matlab'
figure('Name',['Navrh pomoci vestavene funkce v Matlabu']);
wa=1;%hranièní kmitoèet pro analogový prototyp
wd=1/pi;%normovaný hranièní kmitoèet pro èíslicový filtr
n=2;%øád filtru
nb=128;%poèet bodù frekvenèní charakteristiky
'Koeficienty pøenosové funkce analogového prototypu'
[b,a] = butter(n,wa,'s')%návrh analogového prototypu s poklesem 3dB na kmitoètu wa=1
[h,w] = freqs(b,a,nb);%výpoèet komplexní frekvenèní charakteristiky analogového filtru
subplot(3,1,1)
plot(w,(abs(h)),'--r')%vykreslení modulové frekvenèní charakteristiky analogového filtru
hold on
'Koeficienty pøenosové funkce èíslicového filtru'
[b,a] = butter(n,wd) %návrh èíslicového filtru pomocí vestavìné funkce v Matlabu s poklesem 3db na normovaném knitoètu 1
[h,w]=freqz(b,a,nb);%výpoèet komplexní frekvenèní charakteristiky diskrétního systému
plot(w,(abs(h)))%vykreslení modulové frekvenèní charakteristiky èíslicového filtru
ylabel('Modul')
legend('Analogovy prototyp','Cislicovy filtr'); 
title('Modulova frekvencni charakteristika')
%Výpoèet fázové charakteristiky
[phi,w] = phasez(b,a,nb);%výpoèet fázové frekvenèní charakteristiky diskrétního systému
subplot(3,1,2)
plot(w,unwrap(phi))%vykreslení fázové frekvenèní charakteristiky èíslicového filtru
ylabel('faze')
title('Fazova charakteristika')
%Výpoèet skupinového zpoždìní
[grp,w]=grpdelay(b,a,nb);%výpoèet skupinového zpoždìní diskrétního systému
subplot(3,1,3)
plot(w,grp)%vykreslení skupinového zpoždìní èíslicového filtru
xlabel('normovana frekvence')
ylabel('tau')
title('Skupinove zpozdeni')
%Vykreslení impulsní charakteristiky
figure('Name',['Navrh pomoci vestavene funkce v Matlabu']);
nimp=50;%poèet bodù impulsní charakteristiky
[imp,t] = impz(b,a,nimp);%výpoèet impulsní charakteristiky
subplot(2,1,1)
stem(t,imp)%vykreslení impulsní charakteristiky
xlabel('Vzorky')
ylabel('Amplituda')
title('Impulsni charakteristika')
%Vykreslení pøechodové charakteristiky
np=50;%poèet bodù pøechodové charakteristiky
[prech,t] = stepz(b,a,np);%výpoèet pøechodové charakteristiky
subplot(2,1,2)
stem(t,prech)%vykreslení pøechodové charakteristiky
xlabel('Vzorky')
ylabel('Amplituda')
title('Prechodova charakteristika')
'Návrh s využitím bilineární transformace bez pøedzkreslení'
figure('Name',['Bilinearni transformace bez predzkresleni']);
'Koeficienty pøenosové funkce analogového prototypu'
[b,a] = butter(n,wa,'s')%návrh analogového prototypu s poklesem 3dB na kmitoètu wa=1
[h,w] = freqs(b,a,nb);%výpoèet komplexní frekvenèní charakteristiky analogového filtru
subplot(3,1,1)
plot(w,(abs(h)),'--r')%vykreslení modulové frekvenèní charakteristiky analogového filtru
hold on
fvz=1;% vzorkovací frekvence (hertz)
'Koeficienty pøenosové funkce èíslicového filtru'
[numd,dend] = bilinear(b,a,fvz)%výpoèet bilineární transformace
[h,w]=freqz(numd,dend,nb);%výpoèet komplexní frekvenèní charakteristiky diskrétního systému
plot(w,(abs(h)))%vykreslení modulové frekvenèní charakteristiky èíslicového filtru
ylabel('Modul')
legend('Analogovy prototyp','Cislicovy filtr'); 
title('Modulova frekvencni charakteristika')
%Výpoèet fázové charakteristiky
[phi,w] = phasez(numd,dend,nb);%výpoèet fázové frekvenèní charakteristiky diskrétního systému
subplot(3,1,2)
plot(w,unwrap(phi))%vykreslení fázové frekvenèní charakteristiky èíslicového filtru
ylabel('faze')
title('Fazova charakteristika')
%Výpoèet skupinového zpoždìní
[grp,w]=grpdelay(numd,dend,nb);%výpoèet skupinového zpoždìní diskrétního systému
subplot(3,1,3)
plot(w,grp)%vykreslení skupinového zpoždìní èíslicového filtru
xlabel('normovana frekvence')
ylabel('tau')
title('Skupinove zpozdeni')
%Vykreslení impulsní charakteristiky
figure('Name',['Bilinearni transformace bez predzkresleni']);
nimp=50;%poèet bodù impulsní charakteristiky
[imp,t] = impz(numd,dend,nimp);%výpoèet impulsní charakteristiky
subplot(2,1,1)
stem(t,imp)%vykreslení impulsní charakteristiky
xlabel('Vzorky')
ylabel('Amplituda')
title('Impulsni charakteristika')
%Vykreslení pøechodové charakteristiky
np=50;%poèet bodù pøechodové charakteristiky
[prech,t] = stepz(numd,dend,np);%výpoèet pøechodové charakteristiky
subplot(2,1,2)
stem(t,prech)%vykreslení pøechodové charakteristiky
xlabel('Vzorky')
ylabel('Amplituda')
title('Prechodova charakteristika')
'Návrh s využitím bilineární transformace s pøedzkreslením'
figure('Name',['Bilinearni transformace s predzkreslenim']);
'Koeficienty pøenosové funkce analogového prototypu'
[b,a] = butter(n,wa,'s') %návrh analogového prototypu s poklesem 3dB na kmitoètu wa=1
[h,w] = freqs(b,a,nb); %výpoèet komplexní frekvenèní charakteristiky analogového filtru
subplot(3,1,1)
plot(w,(abs(h)),'--r') %vykreslení modulové frekvenèní charakteristiky analogového filtru
hold on
fvz = 1; % vzorkovací frekvence (hertz)
omega1=1; % normovaný hranièní kmitoèet propustného pásma pro èíslicový filtr
u1 = 2*fvz*tan(omega1/2); %výpoèet pøedzkreslené hodnoty hranièního kmitoètu v analogové oblasti
'Koeficienty pøenosové funkce analogového prototypu po pøedzkreslení'
[b,a] = butter(n,u1,'s') %návrh analogového prototypu s poklesem 3dB na pøedzkresleném kmitoètu u1
'Koeficienty pøenosové funkce èíslicového filtru'
[numd,dend] = bilinear(b,a,fvz) %výpoèet bilineární transformace
[h,w]=freqz(numd,dend,nb); %výpoèet komplexní frekvenèní charakteristiky diskrétního systému
plot(w,(abs(h))) %vykreslení modulové frekvenèní charakteristiky èíslicového filtru
ylabel('Modul')
legend('Analogovy prototyp','Cislicovy filtr'); 
title('Modulova frekvencni charakteristika')
ylim([0 1])
%Výpoèet fázové charakteristiky
[phi,w] = phasez(numd,dend,nb);%výpoèet fázové frekvenèní charakteristiky diskrétního systému
subplot(3,1,2)
plot(w,unwrap(phi))%vykreslení fázové frekvenèní charakteristiky èíslicového filtru
ylabel('faze')
title('Fazova charakteristika')
%Výpoèet skupinového zpoždìní
[grp,w]=grpdelay(numd,dend,nb);%výpoèet skupinového zpoždìní diskrétního systému
subplot(3,1,3)
plot(w,grp)%vykreslení skupinového zpoždìní èíslicového filtru
xlabel('normovana frekvence')
ylabel('tau')
title('Skupinove zpozdeni')
%Vykreslení impulsní charakteristiky
figure('Name',['Bilinearni transformace s predzkreslenim']);
nimp=50;%poèet bodù impulsní charakteristiky
[imp,t] = impz(numd,dend,nimp);%výpoèet impulsní charakteristiky
subplot(2,1,1)
stem(t,imp)%vykreslení impulsní charakteristiky
xlabel('Vzorky')
ylabel('Amplituda')
title('Impulsni charakteristika')
%Vykreslení pøechodové charakteristiky
np=50;%poèet bodù pøechodové charakteristiky
[prech,t] = stepz(numd,dend,np);%výpoèet pøechodové charakteristiky
subplot(2,1,2)
stem(t,prech)%vykreslení pøechodové charakteristiky
xlabel('Vzorky')
ylabel('Amplituda')
title('Prechodova charakteristika')