You are on page 1of 2

clear all; clc; close all;

amplituda = 2;
vzorkovani = 1000; %Hz
frekvence = 20; %Hz
t = 0:1/vzorkovani:0.5; % 0 - 0.5 sec
signal = amplituda * sin(2*pi*frekvence*t);
SNR = 4; %dB
A = amplituda / sqrt(2);
sigma = A / (10^(SNR/20));
sum = sigma * randn(1,length(t)); %pozor na rand/randn !
signal_sesumem = signal + sum; % - sigma/2;
%jake tam jsou frekvence ?
f = fft(signal_sesumem);
f2 = f(1:floor(length(f)/2));
fx = linspace(0,vzorkovani/2,length(f2));
figure
plot(fx,abs(f2));
xlabel('frekvence Hz');
% vyrobim filtr
n1 = 2; % delka
% co chci orezat ? cokoliv nad "frekvence"
cutoff = frekvence / (vzorkovani/2);
% realne dam o par procent vyssi frekvenci
Wn = cutoff - cutoff*0.5;
[b1 a1] = cheby1(n1, 0.5, Wn);
n2 = 4;
[b2 a1] = cheby1(n2, 0.5, Wn);
% frekvencni odezva filtru
[h1 w1] = freqz(b1,a1,256,vzorkovani);
[h2 w2] = freqz(b2,a2,256,vzorkovani);
figure
semilogy(w1,abs(h1),'r',w2,abs(h2),'b');
xlabel('frekvence Hz');
legend('delka 10','delka 40');
[b1 a1] = cheby2(n1, 0.5, Wn);
[b2 a1] = cheby2(n2, 0.5, Wn);
[h1 w1] = freqz(b1,a1,256,vzorkovani);
[h2 w2] = freqz(b2,a2,256,vzorkovani);
figure
semilogy(w1,abs(h1),'r',w2,abs(h2),'b');
xlabel('frekvence Hz');
legend('delka 10','delka 40');
[b1 a1] = ellip(n1, 0.5, 0.5, Wn);
[b2 a1] = ellip(n2, 0.5, 0.5, Wn);
[h1 w1] = freqz(b1,a1,256,vzorkovani);
[h2 w2] = freqz(b2,a2,256,vzorkovani);
figure
semilogy(w1,abs(h1),'r',w2,abs(h2),'b');
xlabel('frekvence Hz');
legend('delka 10','delka 40');
[b1 a1] = butter(n1, Wn);
[b2 a1] = butter(n2, Wn);
[h1 w1] = freqz(b1,a1,256,vzorkovani);
[h2 w2] = freqz(b2,a2,256,vzorkovani);
figure
semilogy(w1,abs(h1),'r',w2,abs(h2),'b');
xlabel('frekvence Hz');

legend('delka 10','delka 40');

You might also like