Paweł Panek Mechatronika grupa 23 Identyfikacja i analiza sygnałów Sprawozdanie nr 10 Metody nieparametryczne w identyfikacji i analizie Sygnałów Fs=1000; t=0:1/Fs:1; xn=noise.signals.values; xn=xn'; %xn=sin(2*pi*50*t)+2*sin(2*pi*120*t); randn(size(t)); Pxx=abs(fft(xn, 1024)).^2/1001; Pxx_short=abs(fft(xn,256)).^2/256; subplot(2,1,1) plot((0:255)/256*Fs,10*log10(Pxx_short),'black') grid, title('Periodogram krotkiego sygnalu') xlabel('Częstotliwosc w Hz'), ylabel('Widmo mocy (dB)'); subplot(2,1,2), plot((0:1023)/1024*Fs,10*log10(Pxx),'black') grid, text(250,45,'Periodogram dluższego sygnalu') xlabel('Czestotliwosc w Hz'), ylabel('Widmo mocy (dB)'); figure subplot(1,1,1), Pxx=(abs(fft(xn(1:256))).^2+... abs(fft(xn(257:512))).^2+... abs(fft(xn(513:768))).^2)/(256*3); plot((0:255)/256*Fs,10*log10(Pxx),'black') grid, xlabel('Czestotliwosc w Hz'), ylabel('Widmo mocy (dB)') title('Usredniony periodogram (fragmenty sygnalu nie nakladaja sie)') Pxx=(abs(fft(xn(1:256))).^2+... abs(fft(xn(129:384))).^2+... abs(fft(xn(257:512))).^2+... abs(fft(xn(385:640))).^2+... abs(fft(xn(513:768))).^2+... abs(fft(xn(641:896))).^2)/(256*6); figure plot((0:255)/256*Fs,10*log10(Pxx),'black'),grid, xlabel('Czestotliwosc w Hz'), ylabel('Widmo mocy (dB)') title('Usredniony periodogram (probki nakladaja sie)') %Estymator funkcji przejścia h=ones(1,10)/10; yn=filter(h,1,xn); [Hest,f]=tfe(xn,yn,256,Fs,256,128,'none'); H=freqz(h,1,f,Fs); %figure subplot(2,1,1) plot(f,abs(H),'black') title('Rzeczywista amplituda funkcji przejscia') xlabel('Czestotliwosc w Hz') subplot(2,1,2) plot(f,abs(Hest),'black') text(110,1.08,'Estymata amplitudy funkcji przejscia') xlabel('Czestotliwosc w Hz') w=hanning(256)'; Pxx=(abs(fft(w.*xn(1:256))).^2)+... abs(fft(w.*xn(129:384))).^2+... abs(fft(w.*xn(257:512))).^2+... abs(fft(w.*xn(385:640))).^2+... abs(fft(w.*xn(513:768))).^2+... abs(fft(w.*xn(641:896))).^2/(norm(w)^2*6); figure plot((0:255)/256*Fs,10*log10(Pxx),'black') grid, xlabel('Czestotliwosc w Hz'), ylabel('Widmo mocy (dB)') title('Periodogram zmodyfikowany oknem Hanninga') %Obliczanie funkcji widmowej gęstości mocy Pxx=psd(xn); nfft=256; Fs=1000; window=hanning(256); noverlap=128; dflag='none'; Pxx=psd(xn,nfft,Fs,window,noverlap,dflag); psd(xn,nfft,Fs,window,noverlap,dflag); xlabel('Czestotliwosc Hz'), ylabel('Amplituda widmowa mocy (dB)') title('Funkcja widmowej gestosci mocy') [Pxx,f]=psd(xn, Fs, 256, noverlap, dflag); figure plot(f,10*log10(Pxx)) %Funkcja koherencji clf, cohere(xn,yn,256,Fs,256,128,'none') title('Funkcja koherencji') %Obliczenie funkcji wzajemnej gęstości widmowej p=0.9; [Pxx,Pxxc,f]=psd(xn,nfft,Fs,window,noverlap,p,dflag); [Pxy,Pxyc,f]=csd(xn,yn,nfft,Fs,window,noverlap,p,dflag); figure plot(f,Pxy) title('Funkcja wzajemnej gestosci widmowej') Dla sygnału wymuszenia otrzymujemy: Dla pierwszego przemieszczenia: Dla drugiego przemieszczenia: Dla pierwszej prędkości: Dla pierwszego przyspieszenia: Jak widać uzyskaliśmy różnorodne wyniki co świadczy o poprawnym wykonaniu eksperymentu. Teraz powtórzymy eksperyment dodając do symulacyjnych danych wyjściowych szum o amplitudzie 20% sygnału: Dla pierwszego przyspieszenia z szumem: Dla pierwszej prędkości z szumem: