Sunteți pe pagina 1din 9

Etapa 3

EMG –Analiza semnalului de frecventa

In continuare vom scoate anumiti parametri din semnalul prelucrat.


Vom lua semnalul care prezinta FTS si FTJ.

Pasul 1
Pentru a nu avea erori la FFT o sa scoatem offset-ul semnalului, pentru aceasta:
vom selecta tot semnalul si vom cauta in meniu valoarea “Mean” apoi vom scadea
din semnal valoarea gasita.

Mean= -0.16909 V
S*=S-Mean;
S*=S+ 0.16909;

Dupa ce am scos offset-ul putem cate o contractie si sa o analizam.


Pasul 2:
Vom scoate FFT din contractia prezentata cu parametrii prezentati in imaginea de
mai jos:

Un nou grafic va fi generat cu ajutorul functiei Magnitude in functie de frecventa.


Pasul 3
Vom afla spectrul de putere pentru FFT.

CH1*CH1=CH1

Pasul 4
Vom dublica spectrul.
Pasul 5
Crearea integrarii canalului FFT pătrat.

Alegem Transform > Integral si apoi Display > Autoscale Waveforms.

De aici vom scoate Puterea totala si Puterea medie selectand tot


semnalul si luad valorile de la Max si Mean.

Pasul 6
Normalizare: vom selecta tot semnalul si ne vom uita dupa Max, cu valoarea gasita
vom calcula CH/K=CH din Transform > Waveform Math.
Dupa vom da din nou Display > Autoscale Waveforms.

Pasul 7
Aflarea frecventei mediana:

Vom cauta valoarea 0.5 si ne vom uita unde gasim aceasta frecventa.
Pentru a afla frecventa la varf vom cauta cel mai inalt varf din spectru si ne vom
uita la frecventa.
Pentru a afla frecventa media vom selecta tot spectrul si dupa ce vom gasi valoarea
medie vom gasi avea valoare si ne vom uita la ce frecventa o gasim.

Puterea Puterea Frecventa Frecventa la Frecventa


totala[V^2/Hz] medie[V^2/Hz] mediana[Hz] varf[Hz] medie[Hz]
0.065 0.024 62.101 74.21 54.296
0.071 0.003 78.125 92.578 60.156
0.165 0.006 64.453 73.828 53.972
0.122 0.005 62.890 62.500 58.203
0.019 0.003 71.875 70.312 67.187

In continuare este codul pentru in Matlab pentru aflarea parametrilor.


function v = calcul_parametri_EMG(s,is_contraction)
fs = 200;
lens = length(s);
t = [1:lens]/fs;
start = find(diff(is_contraction)==1);
stop = find(diff(is_contraction)==-1);
if stop(end)<start(end), stop=[stop lens];end
if stop(1)<start(1), start=[1 start];end
v=[];
nr_contractii = length(start);
for i=1:nr_contractii
c = s(start(i):stop(i));
lenc = length(c);
if lenc < fs/4 , continue ; end

p = ceil(log2(lenc));
N=2^p;
f= [0:N-1]*fs/N;
SA = abs(fft([c.*hamming(lenc); zeros(N-lenc,1)]));
SA=SA/N;
SA = SA(1:N/2); f = f (1:N/2);
SP = SA.^2;
figure(3); subplot(311);plot(c);grid;axis tight; title('contractia curenta');
subplot(312);plot(f,SP);

SI = zeros(size(SP));
SI(1) = SP(1);
for k = 2:length(SP)
SI(k) = SI(k-1) + SP (k);
end
SI = SI/ max(SI);
figure(3);subplot(313);plot(f,SI);

puterea_totala = sum(SP);
puterea_medie= mean(SP);

poz = find(SI >= 0.5); poz = poz(1);


frecv_mediana = f(poz);

poz = find(SI >= mean(SI)); poz = poz(1);


frecv_medie = f(poz);

poz = find(SP == max(SP)); poz = poz(1);


frecv_varf = f(poz);

v= [v; puterea_totala puterea_medie frecv_mediana frecv_medie frecv_varf]


pause(0.5);
end
disp('gata');

S-ar putea să vă placă și