Semestralni prace z predmetu "Signaly asoustavy"

Zadani

Prilohy

Reseni

Nejdrive provedeme inicializaci prostedi v Matlabu.

clc;
clear all;
close all;
format long;

Nacteme vstupni signal a zobrazime ho.

[signal,fs,b] = wavread('Sound.wav');
N = length(signal);
figure; stem((0:length(signal)-1)/fs,signal,'.');
title('Vstupni signal');
xlabel('t[s]');
ylabel('s(t)');
grid on;

attachment:in.png

Dale nacteme impulzovou odezvu filtru a zobrazime ji.

filtr = dlmread('filtr.dat', '\n');
figure; stem((0:length(filtr)-1)/fs,filtr);
title('Impulzova odezva filtru');
xlabel('t[s]');
ylabel('s(t)');
grid on;

attachment:imp.png

Dalsim krokem je aplikace impulzove odezvy filtru na vstupni signal. To provedeme pomoci konvoluce. Vystup opet zobrazime.

vystup = conv(signal, filtr);
wavwrite(vystup, fs, b, 'vystup.wav');
figure; stem((0:length(vystup)-1)/fs,vystup,'.');
title('Vystupni signal');
xlabel('t[s]');
ylabel('s(t)');
grid on;

attachment:out.png

Spektrum vstupniho signalu ziskame rychlou fourierovou transformaci.

spektrum = fftshift(fft(signal));
figure; stem((-length(spektrum)/2:length(spektrum)/2-1)*fs/length(signal),abs(spektrum),'.');
title('Spektrum vstupniho sugnalu');
xlabel('f[Hz]');
ylabel('S(f)');

attachment:in-s.png

Obdobne i pro vystupni signal.

ospektrum = fftshift(fft(vystup));
figure; stem((-length(ospektrum)/2:length(ospektrum)/2-1)*fs/length(vystup),abs(ospektrum),'.');
title('Spektrum vystupniho signalu');
xlabel('f[Hz]');
ylabel('S(f)');

attachment:out-s.png

Nakonec spocitame pozadove hodnoty energii pro vstupni a vystupni signal.

Ein = sumsqr(signal)
Eout = sumsqr(vystup)

Ein = 5.643853576660156e+003
Eout = 1.793025481292911e+002

Zaver

Je videt, ze se jedna o horni propust.

Prilohy