Jakub WILK 149500
Maciej BOROWSKI 137034
Podstawy i Algorytmy Przetwarzania Sygnałów
Ćwiczenie 3: Analiza częstotliwości drgań rezonansowych
Cel i zakres ćwiczenia
W ćwiczeniu badano reakcję metalowej lancy utwierdzonej w żeliwnym bloku, stosując różne postaci pobudzenia. Wykorzystano pobudzenie szumem białym oraz za pomocą sygnału typu chirp lub sweep (przemiatanie). Elementem pobudzającym był wzbudnik. Trzecim pobudzeniem było pobudzenie impulsowe, za pomocą młotka modalnego, wyposażonego w czujnik siły. W ćwiczeniu mierzono siłę z jaką pobudzany był układ oraz prędkość z jaką drgała lanca. Częstotliwość próbkowania przyjęto jako 20 000 próbek na sekundę, czasy pomiarów wynosiły: 30 sekund (impulsowe i szum) oraz 50 sekund (przemiatanie). Celem laboratorium było wyznaczenie transmitancji operatorowej obiektu oraz widma amplitudowo częstotliwościowego, dla wszystkich trzech pobudzeń.
Wyniki oraz ich opracowanie i analiza
Ustalenie tak wysokiej częstotliwości próbkowania, podczas gdy wystarczyłaby w zupełności o rząd mniejsza, było celowym zabiegiem. Tak duża ilość danych pomiarowych zmusza do zastosowania decymacji, w celu ograniczenia ilości próbek. Algorytmy obróbki poszczególnych sygnałów podano poniżej.
Impuls
Przygotowanie:
- Załadowanie danych do zmiennych w programie
- Zbadanie wysokości impulsu przed decymacją
- Decymacja obu sygnałów
- Zbadanie wysokości impulsu po decymacji
- Obliczenie procentowej różnicy między wysokością impulsu przed i po decymacji
- Wyizolowanie impulsu z całego sygnału pobudzenia, analogiczne skrócenie sygnału odpowiedzi
Obróbka:
- Szybka Transformata Fouriera obu sygnałów
- Obliczenie Transmitancji obiektu jako stosunku transformaty wyjścia do transformaty wejścia
Przemiatanie
Przygotowanie:
- Załadowanie danych do zmiennych w programie
- Decymacja obu sygnałów
Obróbka:
- Szybka Transformata Fouriera obu sygnałów
- Obliczenie Transmitancji obiektu jako stosunku transformaty wyjścia do transformaty wejścia
Szum
Przygotowanie:
- Załadowanie danych do zmiennych w programie
- Decymacja obu sygnałów
- Zapisanie zdecymowanych sygnałów do plików
Obróbka:
- Okienkowanie obu sygnałów (za pomocą polecenia hamming)
- Szybka Transformata Fouriera obu sygnałów
- Obliczenie Transmitancji obiektu jako stosunku transformaty wyjścia do transformaty wejścia
Wnioski
Zmiana wysokości impulsu po decymacji wynosi około 4%.
Wykresy widm są stosunkowo podobne. Z analizy niskich częstotliwości widma (do 20 Hz) można wyciągnąć wniosek, że częstotliwość rezonansowa układu znajduje się pomiędzy 10 a 15 Hz.
Załączniki
Listing programów użytych do obróbki sygnałów:
Szum, przygotowanie I obróbka:
clear all;
sz = load('sz1.txt');
szFb = sz(:,1);
szVb = sz(:,2);
lensz = length(sz);
szF = deci(szFb,lensz,100);
szV = deci(szVb,lensz,100);
save szF.txt szF -ASCII
save szV.txt szV -ASCII
clear all;
szF =load('szF.txt');
szV = load('szV.txt');
lensz = length(szF);
ok1 = hamming(lensz);
plot(ok1);
title('Okienko typu Hamming')
szFd = szF(:);
szVd = szV(:);
szFok = szFd.*ok1;
szVok = szVd.*ok1;
figure(2)
subplot(2,1,1)
plot(szFok)
title('Wymuszenie po okienkowaniu')
subplot(2,1,2)
plot(szVok)
title ('Odpowiedz po okienkowaniu')
szFokfft = abs(fft(szFok));
szVokfft = abs(fft(szVok));
trans = szVokfft./szFokfft;
dft = linspace(1,20000,lensz);
figure(3)
subplot(2,1,1)
plot(dft(1:600),szFokfft(1:600));
xlabel 'Frequency [Hz]'
ylabel 'Magnitude [-]'
title 'Widmo z siły'
subplot(2,1,2)
plot(dft(1:600),szVokfft(1:600));
xlabel 'Frequency [Hz]'
ylabel 'Magnitude [-]'
title 'Widmo z prędkości'
figure(4)
plot(dft,trans);
title 'Transmitancja'
Sweep, przygotowanie I obróbka:
clear all;
chirp = load('sweep1.txt');
chirpF = chirp(:,1);
chirpV = chirp(:,2);
lenc = length(chirp);
chirpFdec = deci(chirpF,lenc,100);
chirpVdec = deci(chirpV,lenc,100);
save cF.txt chirpFdec -ASCII
save cV.txt chirpVdec -ASCII
clear all;
cFb = load('cF.txt');
cVb = load('cV.txt');
lens = length(cFb);
cF = offset(cFb,lens);
cV = offset(cVb,lens);
cFf = abs(fft(cF));
cVf = abs(fft(cV));
trans = cVf./cFf;
dft = linspace(1,20000,lens);
subplot(2,1,1)
plot(dft(1:2000),cFf(1:2000));
xlabel 'Frequency [Hz]'
ylabel 'Magnitude [-]'
title 'Widmo z siły'
subplot(2,1,2)
plot(dft(1:2000),cVf(1:2000));
xlabel 'Frequency [Hz]'
ylabel 'Magnitude [-]'
title 'Widmo z prędkości'
figure(2)
plot(dft,trans);
title 'Transmitancja'
Impuls, przygotowanie I obróbka:
clear all;
imp = load('imp1.txt');
iF = imp(:,1);
len = length(iF)
pd = max(iF);
iFd = deci(iF,len,10);
pod = max(iFd);
err = ((pd-pod)/pd)*100;
iV = imp(:,2);
iVd = deci(iV,len,10);
save iF.txt iFd -ASCII
save iV.txt iVd -ASCII
clear all;
iF = load('iF.txt');
iV = load('iV.txt');
len = length(iF);
iFf = abs(fft(iF));
iVf = abs(fft(iV));
dft = linspace(1,2000,len);
trans = iVf./iFf;
subplot(2,1,1)
plot(dft(1:600),iFf(1:600));
xlabel 'Frequency [Hz]'
ylabel 'Magnitude [-]'
title 'Widmo z siły'
subplot(2,1,2)
plot(dft(1:600),iVf(1:600));
xlabel 'Frequency [Hz]'
ylabel 'Magnitude [-]'
title 'Widmo z prędkości'
figure(2)
plot(dft,trans);
title 'Transmitancja'
Funkcja decymująca:
function [ decimatedsig ] = deci( sig, len, decimationpar )
%DECI Dokonuje decymacji podanego sygnału
% Decymuje podany sygnał dla danego parametru decymacji
for n = 1:len
if n*decimationpar>len
break
end
decimatedsig(n)=sig(n*decimationpar);
end
end