Advertisement
Guest User

zad1

a guest
Dec 17th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 2.38 KB | None | 0 0
  1.  
  2. pkg load signal;
  3. wf=wrecfile('ICP_sygnaly/046050jg.dta'); % otwarcie pliku
  4. numer_segmentu = 3;
  5.  
  6. segment = wrec_dsgm(wf, numer_segmentu); %struktura zawierajaca naglowek->ciekawe informacje o segmencie
  7.  
  8. zbieranie = []; %inicjacja tablicy gdzie bede zbieral probki do liczenia mocy
  9.  
  10. moc_tablica = 0;
  11. dlugosc_wektora_mocy = 1; % to nie jest dlugosc co ile mocy zostalo uwzglednionych
  12.  
  13. stopien_decymacji = round(wrec_freqsmp(wf)/0.25);
  14. rzad_filtra = 660;
  15.  
  16. b = fir1(rzad_filtra, 0.9*1/stopien_decymacji, "low");
  17.  
  18.  
  19. dlugosc_bloku = stopien_decymacji*2; % by decymacja za kazdym razem dawala 2 probki
  20. stan1 = zeros(length(b)-1,1);
  21.  
  22. for(probka_startowa = 0:dlugosc_bloku:segment.nsmp-dlugosc_bloku-1)
  23.   blok_probek = wrec_rdsig(wf,numer_segmentu,probka_startowa,dlugosc_bloku,{'#ICP'});
  24.   %plot(blok_probek);
  25.  
  26.   %jak dlugi powinien byc wektor zer ktory bedzie stan1 zeby je najpierw zainicjowac
  27.   %czy moze byc skalar zero, jedno zero jak
  28.   [filtracja1, stan1] =  filter(b,1, blok_probek, stan1);
  29.   wyjscie_decymacja1 = filtracja1(1:stopien_decymacji:length(filtracja1));  %komenda decimate od razu filtruje filtrem czebyszewa wiec nie musze wczesniej filtrowac
  30.   %plot(wyjscie_1decymacja);
  31.  
  32.   %nie musze sprawdzac czy mam wystarczajaco duzo probek bo tak ustawilem dlugosc bloku by miec za kazdym razem wystarczajaco duzo probek
  33.  
  34.  
  35.  
  36.   %znowu nie musze sprawdzac czy uzbieralo mi sie wystarczajaco duzo probek bo tak ustawilem dlugosc bloku by za kazdym razem miec 4 probki
  37.  
  38.  
  39.  
  40.   zbieranie = [zbieranie; wyjscie_decymacja1];
  41.  
  42.   while(length(zbieranie) >= 60)  %while na wypadek gdyby zebralo sie wiecej niz 90 probek choc wiem, ze w moim przypadku nie jest to mozliwe
  43.           transformata = abs(fft(zbieranie(1:60)));
  44.           moc = transformata(1).^2+transformata(2).^2+transformata(3).^2+transformata(4).^2; %policzylem, ze w tych probkach znajduje sie moc ktora nas interesuje
  45.           moc = moc./60./2;
  46.           moc_tablica(dlugosc_wektora_mocy) = moc;
  47.  
  48.           dlugosc_wektora_mocy = dlugosc_wektora_mocy + 1;
  49.          zbieranie = zbieranie(31:length(zbieranie));   %wyrzucam polowe probek ktore wykorzystalem
  50.   endwhile
  51.  
  52. end
  53.  
  54. czas = (1:length(moc_tablica)).*2; % liczymy transformate z 60 probek ale liczymy ja co 30 probek a 30 probek odpowiada 30*4s = 120s = 2 min
  55. plot(czas,moc_tablica);
  56. title('fale B');
  57. xlabel('czas [min]');
  58. ylabel('moc');
  59.  
  60. wrec_close(wf);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement