Cvičení 12

Průměrování spekter a segmentace

Úloha 12.1 Periodogram

a) Generujte následující signál :

t = 0:.001:1;

x = sin(2*pi*50*t) + 2*sin(2*pi*120*t) + randn(size(t));

b) Zobrazte "krátkodobý" periodogram (256 - bodová FFT)

c) Zobrazte periodogram (1024 bodová FFT)

Úloha 12.2 Průměrovaný periodogram - Welchova metoda

a) Zobrazte průměrovaný periodogram bez překrývání (první tři segmenty o délce 256 vzorků)

b) Zobrazte průměrovaný periodogram s překrytím 50 %

c) Zobrazte průměrovaný periodogram s překrytím 50 % a váhováním Hannovým oknem

Úloha 12.3 Funkce psd.m (Power Spectral Density)

psd(xn,nfft,Fs,window,noverlap,dflag);

a) Generujte signál z úlohy 12.1.a) s 50-ti různými realizacemi náhodného signálu

b) Zobrazte periodogram průměru vygenerovaných signálů (s použitím FFT)

c) Zobrazte periodogramy všech 50-ti realizací (s použitím PSD)

d) Zobrazte průměrovaný periodogram všech 50-ti realizací (s použitím PSD)

Úloha 12.4 Segmentace

a) Napište funkci pro zobrazení periodogramu.

function Psign = periodgr(signal)

signal = signal(:); N=length(signal);

Psign=abs(fft(signal)).^2/N;

plot(Psign(1:N/2))

b) Napište funkci pro výpočet průměrovaných periodogramů Welchovou metodou.

function Px = welch(x,L,over)

% vypocet prumerovaneho spektra Welcovou metodou

% L - delka segmentu (ve vzorcich)

% over - prekryti <0-1>

% vahovani lze zmenit uvnitr m-file (default Hanning)

% funkce vola periodgr.m

if (over >= 1) | (over < 0)

error('Prekryti musi byt v intervalu 0 az 1'), end

n1=1;

n0=(1-over)*L;

nsect=1+floor((length(x)-L)/(n0));

Px=0;

for i = 1:nsect

Px = Px + periodgr(x(n1:n1+L-1).*hanning(L))/nsect;

n1 = n1 + n0;

end;