Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica




Informatica


Qdidactic » stiinta & tehnica » informatica
Estimare spectrala si analiza timp-frecventa - lucrarea de laborator



Estimare spectrala si analiza timp-frecventa - lucrarea de laborator


estimare spectrala si analiza timp-frecventa - lucrarea de laborator

Obiectivele lucrarii

1 Studiul estimatorilor spectrali clasici, parametrici si neparametrici

2 Studiul metodelor de analiza timp-frecventa a proceselor nestationare

3) Utilizarea functiilor MATLAB pentru implementarea tehnicilor de estimare spectrala si de analiza timp-frecventa;

4) Studiul interactiv al metodelor de estimare spectrala si de analizatimp-frecventa utilizand mediul DIDACTICIEL.



Desfasurarea lucrarii

Estimatorul spectral simplu

Fie un proces alb, gaussian, centrat () si de dispersie , definit pe 2048 esantioane. Sa se realizeze analiza spectrala a acestui proces utilizand estimatorul spectral simplu.

a) Sa se determine deplasarea si dispersia estimatorului.

b) Sa se refaca aceeasi analiza pentru  512, 1024 si 4096 esantioane.

c) Sa se verifice ca acest estimator este deplasat si ca dispersia sa nu depinde de durata observatiei (estimator inconsistent).


longueur_P=2048;

P=randn(1, longueur_P)*sqrt(0.25);

[spectre_simple, Frecventa]=periodo_simple(P, longueur_P);

semilogy(Frecventa, spectre_simple, 'b');      

xlabel('Frecventa normalizata');

ylabel('Amplitudine (dB)');

title('Periodograma simpla');

biais=mean(spectre_simple)

variance=std(spectre_simple)^2                            


Estimatorul spectral mediat

In cazul aceluiasi proces aleator sa se realizeze analiza spectrala folosind estimatorul spectral mediat. Sa se studieze influenta numarului de secvente folosite pentru mediere. Sa se determine deplasarea si dispersia estimatorului.


longueur_sequence=256;   

[spectre_moyenne, Frecventa]=periodo_moyenne(P, longueur_sequence);

semilogy(Frecventa, spectre_moyenne, 'b');

xlabel('frecventa normalizata');

ylabel('Amplitudine (dB)');

hold on;

longueur_sequence=128;   

[spectre_moyenne, Frecventa]=periodo_moyenne(P, longueur_sequence);

semilogy(Frecventa, spectre_moyenne, '--r');

title('Periodograma mediata');

legend('mediere pe 8 ferestre', 'mediere pe 16 ferestre');


Sa se verifice ca acest estimator este tot deplasat, dar consistent. Ce se poate spune despre variatia rezolutiei frecventiale in raport cu numarul de sectiuni mediate

Rezultatele se vor trece intr-un tabel de tipul:


Lungimea sectiunilor

Rezolutia frecventiala

Dispersia

512



256



128



64




Estimatorul spectral modificat

Sa se realizeze analiza spectrala a aceluiasi proces aleator folosind estimatorul spectral modificat. Sa se studieze influenta numarului de secvente folosite pentru mediere si a diferitelor ferestre utilizate pentru netezire. Sa se determine deplasarea si dispersia estimatorului.


fenetre=[boxcar(longueur_sequence)];

fenetre=fenetre*sqrt(longueur_sequence/ sum(fenetre.*fenetre));

fenetre=fenetre.';

[spectre_modifie, Frecventa]=periodo_modifie(P, longueur_sequence, fenetre);

semilogy(Frecventa, spectre_modifie, 'b');

xlabel('frecventa normalizata');

ylabel('Amplitudine (dB)');

hold on;

title('Periodograma modificata');



Rezolutia dinamica

Sa se realizeze analiza spectrala a unui semnal compus din doua sinusoide afectate de zgomot. Parametrii componentelor semnalului sunt urmatorii:

prima sinusoida:                a doua sinusoida: zgomot alb gaussian:

frecventa = 25 Hz frecventa = 50 Hz medie = 0

amplitudine = 1                 amplitudine = 0.01 deviatie standard = 0.031

Frecventa de esantionare se considera 200 Hz. Lungimea a semnalului va lua valorile urmatoare : =.

Sa se testeze cei trei estimatori spectrali studiati anterior pentru: , , , si ferestrele rectangulara, Hamming si Blackman, fiind numarul de subsecvente in care este impartita secventa initiala.


longueur_signal=512;

t=0:1/200:(longueur_signal/200)-1/200;

y1=sin(2*pi*25*t); y2=0.01 * sin(2*pi*50*t);


bruit=randn(1, longueur_signal); signal=y1+y2+bruit*0.031;


[spectre_simple, Frecventa]=periodo_simple(signal, longueur_signal);

semilogy(Frecventa, spectre_simple, 'b'); title('512 puncte');


longueur_sequence=256;

[spectre_moyenne, Frecventa]=periodo_moyenne(signal, longueur_sequence);

semilogy(Frecventa, spectre_moyenne, 'b');

title('K=512, L=2');


longueur_sequence=256;

fenetre=[hamming(longueur_sequence)];

fenetre=fenetre*sqrt(longueur_sequence/ sum(fenetre.*fenetre));

fenetre=fenetre.';      

[spectre_modifie, Frecventa]=periodo_modifie(signal, longueur_sequence, fenetre);

semilogy(Frecventa, spectre_modifie, 'b'); title('Hamming');

xlabel('frecventa normalizata'); ylabel('Amplitudine')


Proces aleator AR

Sa se genereze un zgomot alb, gaussian, centrat, de dispersie 0.25.

Sa se filtreze apoi acest semnal cu ajutorul unui filtru, avand caracteristica de transfer .

Sa se identifice procesul AR rezultat si sa se regaseasca valorile parametrilor (, , ) corespunzator datelor generate. Se va presupune cunoscut ordinul procesului ().

bruit=randn(1, 2048)*0.5;

b=1; a=[1 0.5 0.75];

y=filter(b, a, bruit); y=y.';

[coef, sigma2]=parametre_AR(y, 2);

title('Polii si zerourile unui proces A.R. de ordinul 2');


ordre=2; dsp=0;

for nu=0:200

denominateur=1;

for ind=1:ordre

coef(ind+1, 1);

coefm=coef(ind+1, 1)*exp(-2*pi*j*ind*nu/200);

denominateur=denominateur+coefm ;

end;

dsp=[dsp sigma2/(abs(denominateur).^2)];

end;

nu=0:1/200:0.5;

plot(nu, dsp(1, 1:length(nu)));

title('Raspunsul in frecventa al filtrului');

xlabel('frecventa normalizata');

ylabel('Amplitudine');


Analiza spectrala de inalta rezolutie parametrica

Sa se genereze o sinusoida pura de frecventa 50 Hz esantionata la 200 Hz (definita pe 4096 esantioane). Reprezentati densitatea sa spectrala de putere considerand acest semnal ca un proces AR, al carui ordin se va determina folosind criteriul lui Akaike.


longueur=4096; t=0:1/200:(longueur/200)-1/200; y=sin(2*pi*50*t); y=y.';

dsp=[]; FPE=zeros(1, 10);

for ordre=1:10

[coef, sigma2]=parametre_AR(y, ordre);

FPE(1, ordre)=((longueur+ordre)/(longueur-ordre))*sigma2;

[mini, position]=min(FPE);

ordre_selectionne=position;        

end

[coef, sigma2]=parametre_AR(y, ordre_selectionne);

for nu=0:200

denominateur=1;

for ind=1:ordre_selectionne

coef(ind+1, 1);

coefm= coef(ind+1, 1)*exp(-2*pi*j*ind*nu/200);

denominateur=denominateur+coefm ;

end;

dsp=[dsp sigma2/(abs(denominateur).^2)];

end;

nu=0:1/200:0.5; dsp=dsp/max(dsp);

plot(nu, dsp(1, 1:length(nu))); title('DSP a semnalului');

xlabel('frecventa normalizata'); ylabel('Amplitudine');

Spectrograma unui semnal chirp

Un semnal MLF are urmatoarea expresie analitica:

unde , fiind durata semnalului.

a) Sa se genereze un astfel de semnal pentru .

b) Sa se reprezinte semnalul in domeniile temporal si frecvential.

c) Sa se reprezinte acelasi semnal in planul timp frecventa cu ajutorul spectrogramei.


a)

f1=2000;

f2=8000;

pulselength=0.025;

Fe=20000;   

t=(0:1/Fe:pulselength);

beta=(f2-f1)/(2*pulselength);

chirp=sin(2*pi*(f1+beta*t).*t);

chirp2=vco(sawtooth((2*pi/pulselength)*t, 1), [f1/Fe, f2/Fe]*Fe, Fe);

figure(1); clf;



subplot(211);

plot(t, chirp);

xlabel('Timp');

ylabel('Amplitudine');

title('Analiza unei modulatii liniare de frecventa')

b)

C=fftshift(abs(fft(chirp)).^2);

lc=length(chirp);

mc=lc/2;

freq=(-mc:1:mc-1)*Fe/lc;

subplot(212);

plot(freq, C);

xlabel('Frecventa [Hz]');

ylabel('Densitatea spectrala de putere')

c)

Wsize=32;

[Cspec, F, T] = specgram(chirp, 128, Fe, Wsize);

figure(2); clf;

imagesc(1000*T, F/1000, abs(Cspec));

xlabel('Timp [ms]');

ylabel('Frecventa [kHz]');

title('Analiza unei modulatii liniare de frecventa')


Ce concluzie se poate trage in privinta informatiei aduse de cele 3 reprezentari


Compromisul rezolutie spectrala rezolutie temorala

Sa se genereze un semnal compus dintr o sinusoida si un Dirac.

Sa se analizeze acest semnal cu ajutorul spectrogramei pentru diverse dimensiuni ale ferestrei de analiza.

Sa se interpreteze rezultatele obtinute.


Fe=10000; f1=1000; f2=4000;

T=0.015; t=[0.005:1/Fe:T];

delta=0.005*Fe;

sig=[zeros(1, delta), sin(2*pi*f1*t), zeros(1, delta),

5*ones(1, 1), zeros(1, 2*delta)];

subplot(311);

plot(0:1000*(1/Fe):1000*(length(sig)/Fe-1/Fe), sig);

title('Semnal temporal');

xlabel('Timp [ms]'); ylabel('Amplitudine');

[S, F, T] = specgram(sig, 128, Fe, 64);

subplot(312); imagesc(T*1000, F/1000, abs(S));

xlabel('Timp [ms]'); ylabel('Frecventa [kHz]');

Title('Spectrograma cu o fereastra de 64 puncte'),

[S, F, T] = specgram(sig, 128, Fe, 16);

subplot(313); imagesc(T*1000, F/1000, abs(S));

xlabel('Timp [ms]'); ylabel('Frecventa [kHz]');

title('Spectrograma cu o fereastra de 16 puncte')


Scalograma

Scalograma este o distributie de energie care se obtine ca modulul la patrat al transformatei wavelet continue.

a Undisoara Morlet este definita prin relatia:

Aceasta nu verifica proprietatea de medie nula. Pentru a aproxima aceasta conditie, conservand un numar mic de oscilatii Morlet a propus compromisul:

Sa se vizualizeze alura acestei undisoare pentru diversi parametri.

b) Puneti in evidenta variatiile rezolutiilor temporala si frecventiala in functie de pozitia in planul timp frecventa. Se va utiliza un semnal compus dintr un Dirac si doua sinusoide trunchiate, de frecvente diferite.


a

[onde, ts]= ond_mor(129, 10, 100);

figure(1); clf;

subplot(211); plot(ts, real(onde));

hold on; plot(ts, abs(onde), 'r');

grid; title('Undisoara Morlet')

b)

Fe=64000;

f1=500; f2=8000; T=0.01;

t=[0:1/Fe:T];

delta=0.005*Fe;

sig1=[zeros(1, delta), sin(2*pi*f1*t), zeros(1, 2*delta)];

sig2=[zeros(1, delta), sin(2*pi*f2*t), zeros(1, 2*delta)];

sig=sig1+sig2; sig(4*delta+1:4*delta+5)=10*ones(1, 5);

figure(1); subplot(212); plot(sig);

title('Semnal studiat: suma a doua sinusoide si un Dirac')

NB_OCT=8; NB_VOIES=1;

[TOnd_SIG,   freqs] = morlet( sig, Fe, length(sig), Fe/2,

NB_OCT, NB_VOIES);

vec_Timp=[0:1/Fe:length(sig)/Fe]*1000; vec_freqs=[0:1:7];

figure(2); clf; colormap(gray);

imagesc(vec_Timp, vec_freqs, 2*log10(abs(TOnd_SIG)));

set(gca, 'YTickLabels', 250*2.^([7:-1:0]));

title('Scalograma unui Dirac si doua sinusoide');

xlabel('Timp [ms]'); ylabel('Frecventa [Hz]')


Distributia Wigner-Ville

a Sa se calculeze distributia Wigner-Ville a unui semnal MLF.

b) Sa se genereze un semnal compus din 3 sinusoide trunchiate: doua debutand la momentul , de frecvente si diferite, a treia debutand la momentul , de frecventa .

Sa se reprezinte distributia Wigner-Ville a acestui semnal si sa se concluzioneze asupra interferentelor temporale si frecventiale.


a)

f1=2000; f2=8000; T=0.008; Fe=20000; t=(0:1/Fe:T);

beta=(f2-f1)/(2*T); delta=0.001*Fe;

x=[zeros(1, delta), sin(2*pi*(f1+beta*t).*t),

zeros(1, delta)]; [W, Wr, abscisse]=wigner(x, Fe);

max(max(real(W)))

max(max(imag(W)))

sum(sum(W))

sum(x.^2)

b)

f1=1000; deltaf=3000; f2=f1+deltaf;

Fe=round(3*f2); T=0.01; t=[0:1/Fe:T];

deltat=0.01*Fe; marge=20;

sig1=[zeros(1, marge), sin(2*pi*f1*t),

zeros(1, T*Fe+deltat+marge)];

sig2=[zeros(1, marge), sin(2*pi*f2*t), zeros(1, T*Fe+deltat+marge)];

sig3=[zeros(1, marge+T*Fe+deltat), sin(2*pi*f1*t), zeros(1, marge)]; sig=sig1+sig2+sig3;

[W, Wr, fwv, abscisse]=wigner(sig, Fe); [N1, N2]=size(W);

figure(2); clf; zoom on ;

subplot(311); milieuf=round(((f1+f2)/2)/(Fe/2)*N1);

plot(abscisse, Wr(milieuf, :)); xlabel('Timp (ms)');

title('Studiul interferentelor')

subplot(312); milieut=round(marge+T*Fe+deltat);

plot(fwv, Wr(:, milieut)); xlabel('Frecventa [kHz]')

subplot(313); repere=round(marge+T/2*Fe);

plot(fwv, Wr(:, repere)); xlabel('Frecventa [kHz]')


Analiza multirezolutie

Sa se studieze cu ajutorul analizei multirezolutie un semnal format dintr o sinusoida cu zgomot. Pentru analiza se va folosi undisoara lui Haar.

Sa se realizeze sinteza aceluiasi semnal plecand de la coeficientii descompunerii si sa se arate ca este posibila filtrarea semnalului anuland o parte dintre acestia.


clear; Fe=5000; taille=1024;

Timp=[1:1:taille]/Fe; numpts=length(Timp);

data=sin(2*pi*25*Timp)+rand(1, taille);

[approx, detail]=analysehaar(data);

newsig=synthesehaar(approx, detail);

selection=detail; selection(8:10, :)=zeros(3, numpts);

sig_debruite=synthesehaar(approx, selection);

figure(1); clf; zoom on

for plt = 1:size(detail, 1),

subplot(10, 2, 2*(plt-1)+1), plot(Timp, detail(plt, 1:numpts));

grid;

if (plt == 1),

title('Detaliu');

end;

if (plt == 10);

xlabel('Timp [s]');

end

end

for plt = 1:size(approx, 1),

subplot(10, 2, 2*plt), plot(Timp, approx(plt, 1:numpts)); grid

if (plt == 1),

title('Aproximare');

end;

if (plt == 10);

xlabel('Timp [s]');

end

end

figure(2); clf; zoom on;

subplot(311); plot(Timp, data); title('Semnal original');

subplot(312); plot(Timp, newsig); title('Semnal reconstruit');

subplot(313); plot(Timp, sig_debruite);

title('Semnal filtrat'); xlabel('Timp [s]')

Studiul operatorilor de estimare spectrala si analiza timp frecventa utilizand mediul DIDACTICIEL

1) Se lanseaza DIDACTICIEL-ul prin introducerea comenzii:

didact

2) Se studiaza interactiv operatorii de estimare spectrala si analiza timp frecventa cu ajutorul meniurilor definite in:

Fourier analysisParametric Models

Fourier analysisEstimators

Deep StudyTime-Frequency Analysis



Tema

Sa se realizeze analiza spectrala folosind algoritmul MUSIC a unui semnal compus din doua sinusoide afectate de zgomot. Parametrii componentelor semnalului sunt urmatorii:

prima sinusoida:                     a doua sinusoida: zgomot alb gaussian:

frecventa = 25 Hz frecventa = 30 Hz medie = 0

amplitudine = 1                      amplitudine = 1 deviatie standard=0.25

Frecventa de esantionare se considera 100 Hz. Se considera ca se dispune de 32 esantioane ale semnalului util.

(Indicatie: matricea de autocorelatie se estimeaza folosind subsecvente ale semnalului, obtinute prin parcurgerea acestuia cu o fereastra glisanta de lungime 16, iar dimensiunea subspatiului semnal se considera egala cu 4).








Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright