Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

%%% Spectrogram %%%

clear
close all

Fs=200;
tp=1/Fs;
a1=2;
a2=1;
a3=1;
fsyg1=10;
fsyg2=20;
fsyg3=40;

t=0:tp:8.1; % czestotliwosc probkowania Fs=2000Hz; czas koncowy tk=2s

y1=a1*sin(2*pi*fsyg1*t);
y2=a2*sin(2*pi*fsyg2*t);
y3=a3*sin(2*pi*fsyg3*t);
y=y1+y2+y3;

N=length(y);%liczba punkt�w sygna��w widma%


widmo=abs(fft(y));%sygna� widma fft - transformata furiera, abs - wartosc
bezwzgl�da
widmo(1)=widmo(1)/N;
widmo(2:end)=widmo(2:end)./(N/2);%to mamy, ��by wykres poprawnie si� zmie�ci�%

dFs=Fs/N;
f=0:dFs:Fs-dFs; %dla widma%

%t=0sek odpowiada f=100Hz; t=1sek odpowiada f=500Hz


%y=chirp(t,100,1,500,'linear'); % 'linear', 'quadratic', and 'logarithmic' zrobione
to jest tak, � w 0 jest 100, w 1s jest 500 hz czestotliwo��. Zwi�ksza sie ona
liniowo

% t=0sek odpowiada f=100Hz; t=1sek odpowiada f=300Hz


%y=chirp(t,100,1,300,'quadratic');

% t=0sek odpowiada f=100Hz; t=1sek odpowiada f=1000Hz


%y=chirp(t,100,1,1000,'quadratic');

M=length(y);

wid=abs(fft(y));

N=length(wid);
wid(1)=wid(1)/N;
wid(2:end)=wid(2:end)./(N/2);

df=Fs/N;
fprintf('Rozdzielczo�� analizy = %1.2f Hz\n',df);
f=0:df:(Fs-df);

figure(1)

subplot(211)
%plot(t,y,'b');
plot(t,y,'b');
axis tight;
grid on
xlabel('Czas')
ylabel('Amplituda')
title('Sygna� (pierwsze 1000 pr�bek)')
hold on;

subplot(212)
stem(f,widmo,'-*b');%rysujemy wykres, dla widma wykorzystujemy sten, '-' bo linia,
'*' bo punkty zaznaczone gwiazdkami, 'b' bo kolor%
axis tight;
grid on;
title('Widmo');
xlabel('Czestotliwosc [Hz]');
ylabel('Amplituda');

figure(2)
spectrogram(y,boxcar(128),100,[],Fs,'yaxis');%tutaj pierwsze, jaki mamy sygna�,
boxcar oznacza okno jakie wycinamy (mo�e by� te� inne okno) w nawiasie jest liczba
pr�bek w oknie(128), noverlap, czyli ile nochodzi (100), potem jest transformata
fouriera, jak wstawimy [] to bierze tyle ile by�o w oknie; potem jest Fs czyli
cz�stotliwo�� pr�bkowania (jak jej nie damy, liczymy w warto�ciach unormowanych);
potem mo�na sobie na przyk��d yaxis - odwr�ci� osie.
title('Spektrogram')
%sound (y, Fs)

Program 2
%%% Spectrogram %%%

clear
close all

Fs=200;
tp=1/Fs;
a1=1;
a2=1;
a3=1;
fsyg1=10;
fsyg2=20;
fsyg3=40;

t=0:tp:8-tp;
t1=0:tp:2-tp; % czestotliwosc probkowania Fs=2000Hz; czas koncowy tk=2s

y1=a1*sin(2*pi*fsyg1*t1);
y2=a2*sin(2*pi*fsyg2*t1);
y3=a3*sin(2*pi*fsyg3*t1);
y4=a1*sin(2*pi*fsyg1*t1);
y=[y1 y2 y3 y4];

N=length(y);%liczba punkt�w sygna��w widma%


widmo=abs(fft(y));%sygna� widma fft - transformata furiera, abs - wartosc
bezwzgl�da
widmo(1)=widmo(1)/N;
widmo(2:end)=widmo(2:end)./(N/2);%to mamy, ��by wykres poprawnie si� zmie�ci�%

dFs=Fs/N;
f=0:dFs:Fs-dFs; %dla widma%
%t=0sek odpowiada f=100Hz; t=1sek odpowiada f=500Hz
%y=chirp(t,100,1,500,'linear'); % 'linear', 'quadratic', and 'logarithmic' zrobione
to jest tak, � w 0 jest 100, w 1s jest 500 hz czestotliwo��. Zwi�ksza sie ona
liniowo

% t=0sek odpowiada f=100Hz; t=1sek odpowiada f=300Hz


%y=chirp(t,100,1,300,'quadratic');

% t=0sek odpowiada f=100Hz; t=1sek odpowiada f=1000Hz


%y=chirp(t,100,1,1000,'quadratic');

M=length(y);

wid=abs(fft(y));

N=length(wid);
wid(1)=wid(1)/N;
wid(2:end)=wid(2:end)./(N/2);

df=Fs/N;
fprintf('Rozdzielczo�� analizy = %1.2f Hz\n',df);
f=0:df:(Fs-df);

figure(1)

subplot(211)
%plot(t,y,'b');
plot(t,y,'b');
axis tight;
grid on
xlabel('Czas')
ylabel('Amplituda')
title('Sygna� (pierwsze 1000 pr�bek)')
hold on;

subplot(212)
stem(f,widmo,'-*b');%rysujemy wykres, dla widma wykorzystujemy sten, '-' bo linia,
'*' bo punkty zaznaczone gwiazdkami, 'b' bo kolor%
axis tight;
grid on;
title('Widmo');
xlabel('Czestotliwosc [Hz]');
ylabel('Amplituda');

figure(2)
%spectrogram(y,boxcar(128),100,[],Fs,'yaxis');%tutaj pierwsze, jaki mamy sygna�,
boxcar oznacza okno jakie wycinamy (mo�e by� te� inne okno) w nawiasie jest liczba
pr�bek w oknie(128), noverlap, czyli ile nochodzi (100), potem jest transformata
fouriera, jak wstawimy [] to bierze tyle ile by�o w oknie; potem jest Fs czyli
cz�stotliwo�� pr�bkowania (jak jej nie damy, liczymy w warto�ciach unormowanych);
potem mo�na sobie na przyk��d yaxis - odwr�ci� osie.
spectrogram(y,boxcar(256),100,[],Fs,'yaxis');
title('Spektrogram')
%sound (y, Fs)

Zaktualizowany 2 dla �ukasza :)

%%% Spectrogram %%%


clear
close all

Fs=200;
tp=1/Fs;
a1=1;
a2=1;
a3=1;
fsyg1=10;
fsyg2=20;
fsyg3=40;

t=0:tp:8-tp;
t1=0:tp:2-tp; % czestotliwosc probkowania Fs=2000Hz; czas koncowy tk=2s

y1=a1*sin(2*pi*fsyg1*t1);
y2=a2*sin(2*pi*fsyg2*t1);
y3=a3*sin(2*pi*fsyg3*t1);
y4=a1*sin(2*pi*fsyg1*t1);
y=[y1 y2 y3 y4];

N=length(y);%liczba punkt�w sygna��w widma%


widmo=abs(fft(y));%sygna� widma fft - transformata furiera, abs - wartosc
bezwzgl�da
widmo(1)=widmo(1)/N;
widmo(2:end)=widmo(2:end)./(N/2);%to mamy, ��by wykres poprawnie si� zmie�ci�%

dFs=Fs/N;
f=0:dFs:Fs-dFs; %dla widma%

M=length(y);

wid=abs(fft(y));

N=length(wid);
wid(1)=wid(1)/N;
wid(2:end)=wid(2:end)./(N/2);

df=Fs/N;
fprintf('Rozdzielczo�� analizy = %1.2f Hz\n',df);
f=0:df:(Fs-df);

figure(1)

subplot(211)
%plot(t,y,'b');
plot(t,y,'b');
axis tight;
grid on
xlabel('Czas')
ylabel('Amplituda')
title('Sygna� (pierwsze 1000 pr�bek)')
hold on;

subplot(212)
stem(f,widmo,'-*b');%rysujemy wykres, dla widma wykorzystujemy sten, '-' bo linia,
'*' bo punkty zaznaczone gwiazdkami, 'b' bo kolor%
axis tight;
grid on;
title('Widmo');
xlabel('Czestotliwosc [Hz]');
ylabel('Amplituda');

figure(2)
subplot(311)
%spectrogram(y,boxcar(128),100,[],Fs,'yaxis');%tutaj pierwsze, jaki mamy sygna�,
boxcar oznacza okno jakie wycinamy (mo�e by� te� inne okno) w nawiasie jest liczba
pr�bek w oknie(128), noverlap, czyli ile nochodzi (100), potem jest transformata
fouriera, jak wstawimy [] to bierze tyle ile by�o w oknie; potem jest Fs czyli
cz�stotliwo�� pr�bkowania (jak jej nie damy, liczymy w warto�ciach unormowanych);
potem mo�na sobie na przyk��d yaxis - odwr�ci� osie.
spectrogram(y,hamming(128),100,[],Fs,'yaxis');
title('Spektrogram')
hold on;
subplot(312)
%spectrogram(y,boxcar(128),100,[],Fs,'yaxis');%tutaj pierwsze, jaki mamy sygna�,
boxcar oznacza okno jakie wycinamy (mo�e by� te� inne okno) w nawiasie jest liczba
pr�bek w oknie(128), noverlap, czyli ile nochodzi (100), potem jest transformata
fouriera, jak wstawimy [] to bierze tyle ile by�o w oknie; potem jest Fs czyli
cz�stotliwo�� pr�bkowania (jak jej nie damy, liczymy w warto�ciach unormowanych);
potem mo�na sobie na przyk��d yaxis - odwr�ci� osie.
spectrogram(y,hamming(256),100,[],Fs,'yaxis');
hold on;
subplot(313)
%spectrogram(y,boxcar(128),100,[],Fs,'yaxis');%tutaj pierwsze, jaki mamy sygna�,
boxcar oznacza okno jakie wycinamy (mo�e by� te� inne okno) w nawiasie jest liczba
pr�bek w oknie(128), noverlap, czyli ile nochodzi (100), potem jest transformata
fouriera, jak wstawimy [] to bierze tyle ile by�o w oknie; potem jest Fs czyli
cz�stotliwo�� pr�bkowania (jak jej nie damy, liczymy w warto�ciach unormowanych);
potem mo�na sobie na przyk��d yaxis - odwr�ci� osie.
spectrogram(y,hamming(64),50,[],Fs,'yaxis');

You might also like