Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice
Acasa » scoala » matematica
Estimare spectrala si analiza timp-frecventa in matlab

Estimare spectrala si analiza timp-frecventa in matlab


estimare spectrala si analiza timp-frecventa

Obiectivele lucrarii

Studiul estimatorilor spectrali clasici, parametrici si neparametrici

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 analiza timp-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

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

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 );

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=

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=

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(

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(

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(

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).





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.