function [yt] = suodatus(xt,Fs,fl,fh);

%LÄHES IDEAALINEN SUODATIN
%Tämä makro tekee suodatuksen taajuusalueessa.
%Aika-alueessahan konvoloitaisiin.
%Tämä makro mukailee laskuharjoitus 4:n tehtävää 5.

%Muunnetaan xt 2-puoleiseen taajuusalueeseen
N = max(size(xt));
Xf = fftshift(fft(xt))/N; 
Xf = Xf'; %Tarpeen, jos xt on ääntä.

%Tehdään lähes ideaalinen suodatin:

%Lasketaan 0 Hz:n kohta
N0 = round((N+1)/2); %0 Hz on sama kuin Xf(N0);

%Lasketaan näyteväli taajuusalueessa ja tehdään taajuusvektori:
f0 = Fs/N; f = -Fs/2:f0:Fs/2-f0;

%Lasketaan osoitinpaikat 2-puoleisessa taajuusalueessa:
%p = positiivinen spektri, n = negatiivinen spektri
Nlp = N0 + round(fl/f0); Nln = N0 - round(fl/f0);
Nhp = N0 + round(fh/f0); Nhn = N0 - round(fh/f0);

Xff = zeros(1,N); %Tehdään pohjaksi 0-vektori
%Asetetaan päästökaistan kohdat ykkösiksi:
Xff(Nlp:Nhp) = 1; Xff(Nhn:Nln) = 1; %Nyt suodattimen spektri on
%samanmuotoinen kuin laskuharjoitus 4:n tehtävässä 5.

Xf2 = Xf.*Xff; %Kerrotaan signaalin spektri suodatinspektrillä
Xf2 = fftshift(Xf2); %Korjataan vektori oikean muotoiseksi
Xf2 = Xf2'; %Transponoidaan vektori
yt = real(ifft(Xf2))*N; %Tehdään F-käänteismuunnos
yt = yt'; %Tehdään pystyvektori

