úterý 12. října 2010

CZS cvičení 3(Matlab)

A=1;
fs=8000;
f=1000;
t0=1;

% sinusovka
N=240;
t = 0:1/fs:t0;
s = A*sin(2*pi*t*f);
ss = s(1:N); %vybereme část průběhu s (240 vzorků)
tss = t(1:N);
figure(1);
subplot(411);
plot(tss,ss);



Spektrum = fft(ss);
subplot(412);
%stem(abs(Spektrum)); % zobrazení spektra
N1=240;
frekvence=0:fs/N1:fs-1;
%plot(frekvence,abs(Spektrum)); % zobrazení spektra na ose x bude správná frekvence
stem(frekvence,abs(Spektrum));
N2=243;
Spektrum = fft(s(1:N2));
frekvence=0:fs/N2:fs-1;
subplot(413);
% tady se bude projevovat prosakování spektra, kvůli nevhodně zvolené N1
plot(frekvence,abs(Spektrum)); % zobrazení spektra na ose x bude správná frekvence
%stem(frekvence,abs(Spektrum));
%% jak prosakování minimalizovat?
% vybereme jiná okna (váhovací), vybereme střed a omezujeme krajní části
okno = hamming(N2); %generujeme hammingovo okno
subplot(411);
Spektrum = fft((s(1:N2).*okno')); % ' transponuje vektor
frekvence=0:fs/N2:fs-1;
subplot(414);
plot(frekvence,abs(Spektrum)); % zobrazení spektra s pomocí ham. okna
%stem(frekvence,abs(Spektrum));

s = loadbin('vm0.bin');
figure(2);
ss = s(1:N); %vybereme část průběhu s (240 vzorků)
tss = t(1:N);
subplot(411);
plot(tss,ss);

Spektrum = fft(ss);
subplot(412);
%stem(abs(Spektrum)); % zobrazení spektra
N1=240;
frekvence=0:fs/N1:fs-1;
%plot(frekvence,abs(Spektrum)); % zobrazení spektra na ose x bude správná frekvence
stem(frekvence,abs(Spektrum));
N2=243;
Spektrum = fft(s(1:N2));
frekvence=0:fs/N2:fs-1;
subplot(413);
% tady se bude projevovat prosakování spektra, kvůli nevhodně zvolené N1
plot(frekvence,abs(Spektrum)); % zobrazení spektra na ose x bude správná frekvence
%stem(frekvence,abs(Spektrum));
%% jak prosakování minimalizovat?
% vybereme jiná okna (váhovací), vybereme střed a omezujeme krajní části
okno = hamming(N2); %generujeme hammingovo okno
subplot(411);
Spektrum = fft((s(1:N2).*okno));
frekvence=0:fs/N2:fs-1;
subplot(414);
plot(frekvence,abs(Spektrum)); % zobrazení spektra s pomocí ham. okna
%stem(frekvence,abs(Spektrum));
figure(3);
N2 = 64;
okno = hamming(N2); %generujeme hammingovo okno
Spektrum = fft((s(1:N2).*okno));
frekvence=0:fs/N2:fs-1;
subplot(311);
semilogy(frekvence,abs(Spektrum)); % zobrazení spektra s pomocí ham. okna
N2 = 128;
okno = hamming(N2); %generujeme hammingovo okno
subplot(312);
Spektrum = fft((s(1:N2).*okno));
frekvence=0:fs/N2:fs-1;
semilogy(frekvence,abs(Spektrum)); % zobrazení spektra s pomocí ham. okna
N2 = 256;
okno = hamming(N2); %generujeme hammingovo okno
subplot(313);
Spektrum = fft((s(1:N2).*okno));
frekvence=0:fs/N2:fs-1;
semilogy(frekvence,abs(Spektrum)); % zobrazení spektra s pomocí ham. okna


A=1;
fs=8000;
f=123;
t0=0.005;

% sinusovka
N=40;
t = 0:1/fs:t0;
s = A*sin(2*pi*t*f);
ss = s(1:N); %vybereme část průběhu s (240 vzorků)
tss = t(1:N);
figure(4);
subplot(411);
plot(tss,ss);

Spektrum = fft(ss);
subplot(412);
%stem(abs(Spektrum)); % zobrazení spektra
N1=40;
frekvence=0:fs/N1:fs-1;
%plot(frekvence,abs(Spektrum)); % zobrazení spektra na ose x bude správná frekvence
stem(frekvence,abs(Spektrum));

Spektrum = fft(ss,N); % kratší signál se automaticky doplní 0
subplot(413);
stem(frekvence,abs(Spektrum));

%% tady už to asi není dobře
figure(5);
N2 = 40;
okno = hamming(N2); %generujeme hammingovo okno
Spektrum = fft((s(1:N2).*okno'),60);
subplot(311);
semilogy(abs(Spektrum)); % zobrazení spektra s pomocí ham. okna
okno = hamming(N2); %generujeme hammingovo okno
subplot(312);
Spektrum = fft((s(1:N2).*okno'),100);
semilogy(abs(Spektrum)); % zobrazení spektra s pomocí ham. okna
okno = hamming(N2); %generujeme hammingovo okno
subplot(313);
Spektrum = fft((s(1:N2).*okno'),256);
semilogy(abs(Spektrum)); % zobrazení spektra s pomocí ham. okna



http://noel.feld.cvut.cz/vyu/a2m99czs/cv_DFT_I.html

Žádné komentáře:

Okomentovat